推断关系

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

例如,请考虑以下 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 表将具有三列:attr1、attr2Element1_Id attr1attr2 列的 ColumnMapping 属性将设置为 MappingType.AttributeElement1_Id列的 ColumnMapping 属性将设置为 MappingType.Hidden

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

数据集: 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: 没有

另请参阅