次の方法で共有


リレーションシップの推論

テーブルとして推論される要素に、テーブルとしても推論される子要素がある場合、2 つのテーブル間に DataRelation が作成されます。 ParentTableName_Idという名前の新しい列が、親要素用に作成されたテーブルと子要素用に作成されたテーブルの両方に追加されます。 この ID 列の ColumnMapping プロパティは MappingType.Hidden に設定されます。 列は親テーブルの自動インクリメント主キーになり、2 つのテーブル間の DataRelation に使用されます。 追加された ID 列のデータ型は 、System.String である他のすべての推論列のデータ型とは異なり、 System.Int32 になります。 ForeignKeyConstraint = を含むも、親テーブルと子テーブルの両方の新しい列を使用して作成されます。

たとえば、次の XML を考えてみましょう。

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

推論プロセスでは、 Element1ChildElement1 の 2 つのテーブルが生成されます。

Element1 テーブルには、Element1_IdChildElement2 の 2 つの列があります。 Element1_Id列の ColumnMapping プロパティは MappingType.Hidden に設定されます。 ChildElement2 列の ColumnMapping プロパティは MappingType.Element に設定されます。 Element1_Id列は、Element1 テーブルの主キーとして設定されます。

ChildElement1 テーブルには、attr1、attr2Element1_Idの 3 つの列があります。 attr1 列と attr2 列の ColumnMapping プロパティは MappingType.Attribute に設定されます。 Element1_Id列の ColumnMapping プロパティは MappingType.Hidden に設定されます。

DataRelationForeignKeyConstraint は、両方のテーブルのElement1_Id列を使用して作成されます。

データセット: DocumentElement

テーブル: Element1

Element1_Id ChildElement2
0 テキスト2

テーブル: ChildElement1

attr1 attr2 Element1_Id
value1 value2 0

DataRelation: Element1_ChildElement1

ParentTable: Element1

ParentColumn: Element1_Id

ChildTable: ChildElement1

子列: Element1_Id

ネスト: 正しい

ForeignKeyConstraint: Element1_ChildElement1

コラム: Element1_Id

ParentTable: Element1

ChildTable: ChildElement1

DeleteRule: カスケード

AcceptRejectRule: 何一つ

こちらも参照ください