Sdílet prostřednictvím


Odvozování sloupců

Jakmile ADO.NET určí z dokumentu XML, které prvky se mají odvodit jako tabulky pro tabulku DataSet, pak odvodí sloupce pro tyto tabulky. ADO.NET 2.0 zavedl nový modul pro odvozování schématu, který odvodí datový typ silného typu pro každý element simpleType . V předchozích verzích byl datový typ odvozeného elementu simpleType vždy xsd:string.

Migrace a zpětná kompatibilita

Metoda ReadXml přebírá argument typu InferSchema. Tento argument umožňuje určit chování odvozování kompatibilní s předchozími verzemi. Dostupné hodnoty výčtu InferSchema jsou uvedeny v následující tabulce.

InferSchema
Poskytuje zpětnou kompatibilitu tím, že vždy odvodí jednoduchý typ jako String.

InferTypedSchema
Odvodí datový typ silného typu. Vyvolá výjimku, pokud je použita s .DataTable

IgnoreSchema
Ignoruje všechna vložená schémata a načte data do existujícího DataSet schématu.

Atributy

Jak je definováno v odvozování tabulek, bude prvek s atributy odvozen jako tabulka. Atributy tohoto elementu se pak odvozují jako sloupce tabulky. Vlastnost ColumnMapping sloupců bude nastavena na MappingType.Attribute, aby se zajistilo, že názvy sloupců budou zapsány jako atributy, pokud je schéma zapsáno zpět do XML. Hodnoty atributů jsou uloženy v řádku v tabulce. Představte si například následující kód XML:

<DocumentElement>  
  <Element1 attr1="value1" attr2="value2"/>  
</DocumentElement>  

Proces odvození vytvoří tabulku s názvem Element1 se dvěma sloupci, attr1 a attr2. Vlastnost ColumnMapping obou sloupců bude nastavena na MappingType.Attribute.

Datová sada: DocumentElement

Tabulka: Element1

attr1 attr2
hodnota1 hodnota2

Prvky bez atributů nebo podřízených elementů

Pokud prvek nemá žádné podřízené prvky nebo atributy, bude odvozen jako sloupec. Vlastnost ColumnMapping sloupce bude nastavena na MappingType.Element. Text pro podřízené prvky je uložen v řádku v tabulce. Představte si například následující kód XML:

<DocumentElement>  
  <Element1>  
    <ChildElement1>Text1</ChildElement1>  
    <ChildElement2>Text2</ChildElement2>  
  </Element1>  
</DocumentElement>  

Proces odvozování vytvoří tabulku s názvem Element1 se dvěma sloupci, ChildElement1 a ChildElement2. Vlastnost ColumnMapping obou sloupců bude nastavena na MappingType.Element.

Datová sada: DocumentElement

Tabulka: Element1

ChildElement1 ChildElement2
Text 1 Text 2

Viz také