推斷關聯性
若被推斷為資料表的項目具有項目子系,且項目子系也被推斷為資料表,則兩個資料表間會建立 DataRelation。這時,名為 ParentTableName_Id 的新資料行會被加入為父項目建立的資料表,以及為項目子系建立的資料表。這個識別資料行的 ColumnMapping 屬性會被設定為 MappingType.Hidden。該資料行將成為父資料表的自動遞增主索引鍵,且會用於兩個資料表間的 DataRelation。加入的識別資料行的資料型別將是 System.Int32,而其他所有推斷資料行的資料型別是 System.String。也會使用父資料表和子資料表中的新資料行,建立 DeleteRule = Cascade 的 ForeignKeyConstraint。
例如,請考量下列 XML:
<DocumentElement> <Element1> <ChildElement1 attr1="value1" attr2="value2"/> <ChildElement2>Text2</ChildElement2> </Element1> </DocumentElement>
推斷處理序會產生兩個資料表:Element1 和 ChildElement1。
Element1 資料表會有兩個資料行:Element1_Id 和 ChildElement2。Element1_Id 資料行的 ColumnMapping 屬性會設定為 MappingType.Hidden。ChildElement2 資料行的 ColumnMapping 屬性會設定為 MappingType.Element。Element1_Id 資料行將設為 Element1 資料表的主索引鍵。
ChildElement1 資料表會有三個資料行:attr1、attr2 和 Element1_Id。attr1 和 attr2 的 ColumnMapping 屬性會被設定為 MappingType.Attribute。Element1_Id 資料行的 ColumnMapping 屬性會設定為 MappingType.Hidden。
DataRelation 和 ForeignKeyConstraint 則會使用兩個資料表的 Element1_Id 資料行建立。
DataSet: DocumentElement
Table: Element1
Element1_Id | ChildElement2 |
---|---|
0 |
Text2 |
Table: 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
從 XML 載入 DataSet 結構描述資訊
巢狀 DataRelation
其他資源
從 XML 推斷 DataSet 關聯式結構
在 DataSet 中使用 XML
使用 ADO.NET 中的 DataSets