Udostępnij za pośrednictwem


Wnioskowanie kolumn

Po ADO.NET na podstawie dokumentu XML, które elementy mają być wnioskowane jako tabele dla elementu DataSet, następnie wywnioskuje kolumny dla tych tabel. ADO.NET 2.0 wprowadzono nowy aparat wnioskowania schematu, który wywnioskuje silnie typ danych dla każdego elementu simpleType . W poprzednich wersjach typ danych wnioskowanego elementu simpleType był zawsze xsd:string.

Migracja i zgodność z poprzednimi wersjami

Metoda ReadXml przyjmuje argument typu InferSchema. Ten argument umożliwia określenie zachowania wnioskowania zgodnego z poprzednimi wersjami. Dostępne wartości dla wyliczenia InferSchema przedstawiono w poniższej tabeli.

InferSchema
Zapewnia zgodność z poprzednimi wersjami przez zawsze wnioskowanie prostego typu jako String.

InferTypedSchema
Wywnioskuje silnie typ danych. Zgłasza wyjątek, jeśli jest używany z elementem DataTable.

IgnoreSchema
Ignoruje dowolny schemat wbudowany i odczytuje dane do istniejącego DataSet schematu.

Atrybuty

Zgodnie z definicją w wnioskowaniu tabel element z atrybutami zostanie wywnioskowany jako tabela. Atrybuty tego elementu zostaną następnie wywnioskowane jako kolumny dla tabeli. Właściwość ColumnMapping kolumn zostanie ustawiona na MappingType.Attribute, aby upewnić się, że nazwy kolumn będą zapisywane jako atrybuty, jeśli schemat zostanie zapisany z powrotem do kodu XML. Wartości atrybutów są przechowywane w wierszu w tabeli. Rozważmy na przykład następujący kod XML:

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

Proces wnioskowania spowoduje utworzenie tabeli o nazwie Element1 z dwiema kolumnami, attr1 i attr2. Właściwość ColumnMapping obu kolumn zostanie ustawiona na MappingType.Attribute.

Zestaw danych: DocumentElement

Tabela: Element1

attr1 attr2
wartość1 value2

Elementy bez atrybutów lub elementów podrzędnych

Jeśli element nie ma elementów podrzędnych ani atrybutów, zostanie on wywnioskowany jako kolumna. Właściwość ColumnMapping kolumny zostanie ustawiona na MappingType.Element. Tekst elementów podrzędnych jest przechowywany w wierszu w tabeli. Rozważmy na przykład następujący kod XML:

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

Proces wnioskowania spowoduje utworzenie tabeli o nazwie Element1 z dwiema kolumnami ChildElement1 i ChildElement2. Właściwość ColumnMapping obu kolumn zostanie ustawiona na Wartość MappingType.Element.

Zestaw danych: DocumentElement

Tabela: Element1

ChildElement1 ChildElement2
Tekst1 Tekst2

Zobacz też