次の方法で共有


入れ子になったスキーマ要素間の暗黙的な関係をマップする

XML スキーマ定義言語 (XSD) スキーマでは、複合型を相互に入れ子にすることができます。 この場合、マッピング プロセスは既定のマッピングを適用し、 DataSetに以下を作成します。

  • 複合型 (親と子) ごとに 1 つのテーブル。

  • 親に一意制約が存在しない場合は、 TableName という名前のテーブル定義ごとに 1 つの主キー列が追加されます_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 スキーマ マッピング プロセスでは、 DataSet に次のものが作成されます。

  • 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 テーブルの間の関係。 このリレーションシップのNestedプロパティは、Order要素とOrderDetail要素がスキーマで入れ子になっているため、Trueに設定されています。

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

こちらも参照ください