映射嵌套架构元素之间的隐式关系

XML 架构定义语言(XSD)模式可以包含嵌套在一起的复杂类型。 在这种情况下,映射过程将应用默认映射并在 DataSet 中创建以下内容:

  • 为每种复杂类型(父类型和子类型)各设一个表。

  • 如果父级上不存在唯一约束,则每个表定义又有一个名为 TableName 的主键列_Id其中 TableName 是父表的名称。

  • 父表的主键约束,标识附加列作为主键(通过将 IsPrimaryKey 属性设置为 True)。 约束名为 Constraint# ,其中 #为 1、2、3 等。 例如,第一个约束的默认名称是 Constraint1。

  • 在子表上创建外键约束,该约束将附加列标识为引用父表主键的外键。 该约束 ParentTable_ChildTable 其中 ParentTable 是父表的名称, ChildTable 是子表的名称。

  • 在父表和子表之间创建数据关系。

以下示例演示一个架构,其中 OrderDetailOrder 的子元素。

<xs:schema id="MyDataSet" xmlns=""
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
  
 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
   <xs:complexType>  
     <xs:choice maxOccurs="unbounded">  
       <xs:element name="Order">  
         <xs:complexType>  
          <xs:sequence>  
            <xs:element name="OrderNumber" type="xs:string" />  
            <xs:element name="EmpNumber" type="xs:string" />  
            <xs:element name="OrderDetail">  
              <xs:complexType>  
                <xs:sequence>  
                  <xs:element name="OrderNo" type="xs:string" />  
                  <xs:element name="ItemNo" type="xs:string" />  
                </xs:sequence>  
              </xs:complexType>  
            </xs:element>  
          </xs:sequence>  
         </xs:complexType>  
       </xs:element>  
     </xs:choice>  
   </xs:complexType>  
  </xs:element>  
</xs:schema>  

XML 架构映射过程在 数据集中创建以下内容:

  • Order 和 OrderDetail 表

    Order(OrderNumber, EmpNumber, Order_Id)  
    OrderDetail(OrderNo, ItemNo, Order_Id)  
    
  • Order 表的唯一约束。 请注意, IsPrimaryKey 属性设置为 True

    ConstraintName: Constraint1  
    Type: UniqueConstraint  
    Table: Order  
    Columns: Order_Id
    IsPrimaryKey: True  
    
  • OrderDetail 表的外键约束。

    ConstraintName: Order_OrderDetail  
    Type: ForeignKeyConstraint  
    Table: OrderDetail  
    Columns: Order_Id
    RelatedTable: Order  
    RelatedColumns: Order_Id
    
  • 「Order」和「OrderDetail」表之间的关系。 此关系的嵌套属性设置为 True,因为 Order 和 OrderDetail 元素嵌套在架构中。

    ParentTable: Order  
    ParentColumns: Order_Id
    ChildTable: OrderDetail  
    ChildColumns: Order_Id
    ParentKeyConstraint: Constraint1  
    ChildKeyConstraint: Order_OrderDetail  
    RelationName: Order_OrderDetail  
    Nested: True  
    

另请参阅