推断关系

如果被推断为表的元素具有也推断为表的子元素,则会在两个表之间创建一个 DataRelation 子元素。 名称为 ParentTableName_Id 的新列将添加到为父元素创建的表和为子元素创建的表。 此 ColumnMapping 标识列的属性将设置为 MappingType.Hidden。 该列将是父表的自动递增主键,并将在两个表之间用于DataRelation的关系。 添加的标识列的数据类型将是 System.Int32,这与所有其他推断列( 即 System.String)的数据类型不同。 将使用父表和子表中的新列来创建ForeignKeyConstraint,并且也会创建一个带有DeleteRule = Cascade的实体。

例如,请考虑以下 XML:

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

推理过程将生成两个表: Element1ChildElement1

Element1 表将包含两列:Element1_IdChildElement2ColumnMapping Element1_Id列的属性将设置为 MappingType.HiddenColumnMapping ChildElement2 列的属性将设置为 MappingType.ElementElement1_Id列将设置为 Element1 表的主键。

ChildElement1 表将具有三列:attr1、attr2Element1_Id ColumnMapping attr1attr2 列的属性将设置为 MappingType.AttributeColumnMapping Element1_Id列的属性将设置为 MappingType.Hidden

一个DataRelationForeignKeyConstraint将使用两个表中的Element1_Id列创建。

数据集: DocumentElement

表格: 元素1

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

嵌套: True

ForeignKeyConstraint: Element1_ChildElement1

Column: Element1_Id

ParentTable: Element1

ChildTable: ChildElement1

DeleteRule: Cascade

AcceptRejectRule: 没有

另请参阅