Ableiten von Spalten

Nachdem von ADO.NET anhand eines XML-Dokuments ermittelt wurde, welche Elemente als Tabellen für ein DataSet-Objekt abgeleitet werden sollen, werden die Spalten für diese Tabellen abgeleitet. In ADO.NET 2.0 wurde eine neue Engine für Schemarückschlüsse eingeführt, die für jedes simpleType-Element einen stark typisierten Datentyp ableitet. In vorherigen Versionen war der Datentyp eines abgeleiteten simpleType-Elements immer xsd:string.

Migration und Abwärtskompatibilität

Die ReadXml-Methode akzeptiert ein Argument vom Typ InferSchema. Mit diesem Argument können Sie das mit vorherigen Versionen kompatible Herleitungsverhalten angeben. Die für die InferSchema-Enumeration verfügbaren Werte werden in der folgenden Tabelle dargestellt.

InferSchema
Stellt Abwärtskompatibilität bereit, indem immer ein einfacher Typ als String hergeleitet wird.

InferTypedSchema
Leitet einen Datentyp mit strikter Typbindung her. Löst bei der Verwendung mit einer DataTable eine Ausnahme aus.

IgnoreSchema
Ignoriert alle Inlineschemata und liest Daten in das vorhandene DataSet-Schema ein.

Attribute

Wie in Ableiten von Tabellen definiert, wird ein Element mit Attributen als Tabelle abgeleitet. Die Attribute dieses Elements werden anschließend als Spalten für die entsprechende Tabelle hergeleitet. Die ColumnMapping-Eigenschaft der Spalten wird auf MappingType.Attribute festgelegt, damit die Spaltennamen als Attribute geschrieben werden, wenn das Schema wieder in XML zurückgeschrieben wird. Die Werte der Attribute werden in einer Tabellenzeile gespeichert. Betrachten Sie beispielsweise den folgenden XML-Code:

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

Der Rückschlussprozess erzeugt eine Tabelle mit dem Namen Element1 und den beiden Spalten attr1 und attr2. Die ColumnMapping-Eigenschaft beider Spalten wird auf MappingType.Attribute festgelegt.

DataSet: DocumentElement

Tabelle: Element1

attr1 attr2
value1 value2

Elemente ohne Attribute oder untergeordnete Elemente

Ein Element ohne untergeordnete Elemente oder Attribute wird als Spalte hergeleitet. Die ColumnMapping-Eigenschaft der Spalte wird auf MappingType.Element festgelegt. Der Text der untergeordneten Elemente wird in einer Tabellenzeile gespeichert. Betrachten Sie beispielsweise den folgenden XML-Code:

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

Der Rückschlussprozess erzeugt eine Tabelle mit dem Namen Element1 und den beiden Spalten ChildElement1 und ChildElement2. Die ColumnMapping-Eigenschaft beider Spalten wird auf MappingType.Element festgelegt.

DataSet: DocumentElement

Tabelle: Element1

ChildElement1 ChildElement2
Text1 Text2

Siehe auch