推斷資料行 (ADO.NET)

更新: November 2007

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

請參閱

概念

從 XML 載入 DataSet (ADO.NET)

從 XML 載入 DataSet 結構描述資訊 (ADO.NET)

其他資源

從 XML 推斷 DataSet 關聯式結構 (ADO.NET)

在 DataSet 中使用 XML (ADO.NET)

DataSet、DataTable 及 DataView (ADO.NET)