XML スキーマ定義言語 (XSD) スキーマでは、複合型を相互に入れ子にすることができます。 この場合、マッピング プロセスは既定のマッピングを適用し、 DataSetに以下を作成します。
複合型 (親と子) ごとに 1 つのテーブル。
親に一意制約が存在しない場合は、 TableName という名前のテーブル定義ごとに 1 つの主キー列が追加されます_Id TableName は親テーブルの名前です。
追加の列を主キーとして識別する親テーブルの主キー制約 ( IsPrimaryKey プロパティを True に設定)。 制約の名前は Constraint# で、#は 1、2、3 などです。 たとえば、最初の制約の既定の名前は Constraint1 です。
親テーブルの主キーを参照する外部キーとして追加列を識別する子テーブルの外部キー制約。 制約は ParentTable_ChildTable という名前であり、ParentTable は親テーブルの名前、ChildTable は子テーブルの名前です。
親テーブルと子テーブルの間のデータ関係。
次の例は、 OrderDetail が Order の子要素であるスキーマを示しています。
<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