推斷資料行 (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 的資料表,其中有 attr1 和 attr2 兩個資料行。這兩個資料行的 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 的資料表,其中有 ChildElement1 和 ChildElement2 兩行資料行。這兩個資料行的 ColumnMapping 屬性都會設定為 MappingType.Element。
DataSet: DocumentElement
資料表: Element1
ChildElement1 |
ChildElement2 |
---|---|
Text1 |
Text2 |
請參閱
概念
從 XML 載入 DataSet 結構描述資訊 (ADO.NET)