Dela via


Slutsatsdragning av kolumner

När ADO.NET har fastställt från ett XML-dokument vilka element som ska härledas som tabeller för en DataSet, härleds sedan kolumnerna för dessa tabeller. ADO.NET 2.0 introducerades en ny schemainferensmotor som härleder en starkt typinskriven datatyp för varje simpleType-element . I tidigare versioner var datatypen för ett anslaget simpleType-element alltid xsd:string.

Migrering och bakåtkompatibilitet

Metoden ReadXml använder ett argument av typen InferSchema. Med det här argumentet kan du ange slutsatsdragningsbeteende som är kompatibelt med tidigare versioner. De tillgängliga värdena för InferSchema-uppräkningen visas i följande tabell.

InferSchema
Ger bakåtkompatibilitet genom att alltid härleda en enkel typ som String.

InferTypedSchema
Härleder en starkt typ av datatyp. Utlöser ett undantag om det används med en DataTable.

IgnoreSchema
Ignorerar alla infogade scheman och läser in data i det befintliga DataSet schemat.

Attribut

Enligt definitionen i Slutsatsdragningstabeller härleds ett element med attribut som en tabell. Attributen för det elementet härleds sedan som kolumner för tabellen. Kolumnmappningsegenskapen för kolumnerna anges till MappingType.Attribute för att säkerställa att kolumnnamnen skrivs som attribut om schemat skrivs tillbaka till XML. Värdena för attributen lagras på en rad i tabellen. Tänk till exempel på följande XML:

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

Slutsatsdragningsprocessen skapar en tabell med namnet Element1 med två kolumner, attr1 och attr2. Egenskapen ColumnMapping för båda kolumnerna anges till MappingType.Attribute.

DataSet: DocumentElement

Tabell: Element1

attr1 attr2
value1 value2

Element utan attribut eller underordnade element

Om ett element inte har några underordnade element eller attribut härleds det som en kolumn. Kolumnens columnMapping-egenskap anges till MappingType.Element. Texten för underordnade element lagras på en rad i tabellen. Tänk till exempel på följande XML:

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

Slutsatsdragningsprocessen skapar en tabell med namnet Element1 med två kolumner, ChildElement1 och ChildElement2. Egenskapen ColumnMapping för båda kolumnerna anges till MappingType.Element.

DataSet: DocumentElement

Tabell: Element1

ChildElement1 ChildElement2
Text 1 Text 2

Se även