Implicit kapcsolatok leképezése beágyazott sémaelemek között

Az XML-sémadefiníciós (XSD) sémák összetett típusok egymásba ágyazott típusai lehetnek. Ebben az esetben a leképezési folyamat alapértelmezett leképezést alkalmaz, és a következőket hozza létre a DataSetkövetkezőben:

  • Minden összetett típushoz (szülő és gyermek) egy tábla tartozik.

  • Ha nincs egyedi kényszer a szülőn, akkor minden tábladefinícióhoz hozzá kell adni egy további elsődleges kulcsoszlopot, amelynek neve Táblanév_Id, ahol a Táblanév a szülőtábla neve.

  • A szülőtábla elsődleges kulcskorlátja, amely a további oszlopot azonosítja elsődleges kulcsként (a IsPrimaryKey tulajdonság Igaz értékre állításával). A kényszer neve Constraint#, ahol # 1, 2, 3 és így tovább. Az első korlátozás alapértelmezett neve például a Kényszer1.

  • Egy idegenkulcs-korlátozás a gyermektáblán, amely a szülőtábla elsődleges kulcsára hivatkozó idegen kulcsként azonosítja a további oszlopot. A kényszer neve ParentTable_ChildTable , ahol a Szülőtábla a szülőtábla neve, a ChildTable pedig a gyermektábla neve.

  • Adatkapcsolat a szülő- és gyermektáblák között.

Az alábbi példa egy sémát mutat be, ahol OrderDetail az Order gyermekeleme.

<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>

Az XML-sémaleképezési folyamat a következőket hozza létre az Adatkészletben:

  • Egy Order és egy OrderDetail tábla.

    Order(OrderNumber, EmpNumber, Order_Id)
    OrderDetail(OrderNo, ItemNo, Order_Id)
    
  • Az Order táblán egy egyedi korlátozás. Vegye figyelembe, hogy a IsPrimaryKey tulajdonság értéke Igaz.

    ConstraintName: Constraint1
    Type: UniqueConstraint
    Table: Order
    Columns: Order_Id
    IsPrimaryKey: True
    
  • Idegenkulcs-korlátozás a OrderDetail táblán.

    ConstraintName: Order_OrderDetail
    Type: ForeignKeyConstraint
    Table: OrderDetail
    Columns: Order_Id
    RelatedTable: Order
    RelatedColumns: Order_Id
    
  • Kapcsolat a Order és OrderDetail táblák között. A Nested kapcsolati tulajdonság True van beállítva, mert az Order és OrderDetail elemek a sémában vannak ágyazva.

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

Lásd még