推斷資料行

ADO.NET 從 XML 文件中判斷要將哪些項目推斷成 DataSet 的資料表後,接著就會推斷這些資料表的資料行。 ADO.NET 2.0 導入了新的結構描述推斷引擎,可推斷每個 simpleType 項目的強型別資料型別。 在舊版本,已推斷 simpleType 元素的資料型別一定會是 xsd:string

移轉和回溯相容性

ReadXml 方法使用 InferSchema 型別的引數。 這個引數可讓您指定與舊版本相容的推斷行為。 下表顯示 InferSchema 列舉型別可用的值。

InferSchema
將簡單型別永遠推斷為 String,以提供回溯相容性 (Backward Compatibility)。

InferTypedSchema
推斷強型別資料型別。 若用於 DataTable,則會擲回例外狀況 (Exception)。

IgnoreSchema
忽略任何內嵌結構描述,並將資料讀入現有的 DataSet 結構描述中。

屬性

如同推斷資料表所定義,具有屬性的元素會推斷為資料表。 然後,該項目的屬性會推斷為資料表的資料行。 資料行的 ColumnMapping 屬性會設定為 MappingType.Attribute,以確保將結構描述寫回 XML 時,資料行名稱會以屬性寫入。 屬性的值儲存在資料表的資料列中。 例如,請考量下列 XML:

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

推斷程序將產生名為 Element1 的資料表,其中有 attr1attr2 兩個資料行。 這兩個資料行的 ColumnMapping 屬性都會設定為 MappingType.Attribute

DataSet:DocumentElement

資料表:Element1

attr1 attr2
value1 value2

沒有屬性或項目子系的項目

如果項目沒有項目子系或屬性,則會推斷為資料行。 資料行的 ColumnMapping 屬性會設定為 MappingType.Element。 項目子系的文字儲存在資料表的資料列中。 例如,請考量下列 XML:

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

推斷程序會產生名為 Element1 的資料表,其中有 ChildElement1ChildElement2 兩行資料行。 這兩個資料行的 ColumnMapping 屬性都會設定為 MappingType.Element

DataSet:DocumentElement

資料表:Element1

ChildElement1 ChildElement2
Text1 Text2

另請參閱