共用方式為


推斷關聯性 (ADO.NET)

若被推斷為資料表的項目具有子項目,且子項目也被推斷為資料表,則兩個資料表間會建立 DataRelation。 這時,名為 ParentTableName_Id 的新資料行會被加入為父項目建立的資料表,以及為項目子系建立的資料表。 這個識別欄位的 ColumnMapping 屬性會被設定為 MappingType.Hidden。 該資料行將成為父資料表的自動遞增主索引鍵,且會用於兩個資料表間的 DataRelation。 加入的識別欄位的資料型別將是 System.Int32,而其他所有推斷資料行的資料型別是 System.String。 也會使用父資料表和子資料表中的新資料行,建立 DeleteRule = CascadeForeignKeyConstraint

例如,請考量下列 XML:

<DocumentElement>
  <Element1>
    <ChildElement1 attr1="value1" attr2="value2"/>
    <ChildElement2>Text2</ChildElement2>
  </Element1>
</DocumentElement>

推斷處理序會產生兩個資料表:Element1ChildElement1

Element1 資料表會有兩個資料行:Element1_IdChildElement2Element1_Id 資料行的 ColumnMapping 屬性會設定為 MappingType.HiddenChildElement2 資料行的 ColumnMapping 屬性會設定為 MappingType.ElementElement1_Id 資料行將設為 Element1 資料表的主索引鍵。

ChildElement1 資料表會有三個資料行:attr1attr2Element1_Idattr1attr2 資料行的 ColumnMapping 屬性會被設定為 MappingType.AttributeElement1_Id 資料行的 ColumnMapping 屬性會設定為 MappingType.Hidden

DataRelationForeignKeyConstraint 則會使用兩個資料表的 Element1_Id 資料行建立。

**DataSet:**DocumentElement

**資料表:**Element1

Element1_Id

ChildElement2

0

Text2

**資料表:**ChildElement1

attr1

attr2

Element1_Id

value1

value2

0

**DataRelation:**Element1_ChildElement1

**ParentTable:**Element1

**ParentColumn:**Element1_Id

**ChildTable:**ChildElement1

**ChildColumn:**Element1_Id

**Nested:**True

**ForeignKeyConstraint:**Element1_ChildElement1

**Column:**Element1_Id

**ParentTable:**Element1

**ChildTable:**ChildElement1

**DeleteRule:**Cascade

**AcceptRejectRule:**None

請參閱

概念

從 XML 載入 DataSet (ADO.NET)

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

巢狀化 DataRelation (ADO.NET)

其他資源

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

在 DataSet 中使用 XML (ADO.NET)

DataSet、DataTable 及 DataView (ADO.NET)