次の方法で共有


XML スキーマ (XSD) からの DataSet リレーションの生成

DataSetでは、親子関係を作成して、2 つ以上の列間の関連付けを形成します。 XML スキーマ定義言語 (XSD) スキーマ内で DataSet リレーションシップを表すには、次の 3 つの方法があります。

  • 入れ子になった複合型を指定します。

  • msdata:Relationship 注釈を使用します。

  • msdata:ConstraintOnly 注釈を指定せずに xs:keyref を指定します。

入れ子になった複合型

スキーマ内の入れ子になった複合型定義は、要素の親子関係を示します。 次の XML スキーマ フラグメントは、 OrderDetailOrder 要素の子要素であることを示しています。

<xs:element name="Order">  
  <xs:complexType>  
     <xs:sequence>
       <xs:element name="OrderDetail" />  
           <xs:complexType>
           </xs:complexType>  
     </xs:sequence>  
  </xs:complexType>  
</xs:element>  

XML スキーマ マッピング プロセスは、スキーマ内の入れ子になった複合型に対応するテーブルを DataSet に作成します。 また、生成されたテーブルの親-子列として使用される追加の列も作成されます。 これらの親-子列はリレーションシップを指定しますが、これは主キー/外部キー制約を指定するのと同じではありません。

msdata:リレーションシップ注釈

msdata:Relationship 注釈を使用すると、入れ子になっていないスキーマ内の要素間の親子リレーションシップを明示的に指定できます。 次の例は、 Relationship 要素の構造を示しています。

<msdata:Relationship name="CustOrderRelationship"
msdata:parent=""
msdata:child=""
msdata:parentkey=""
msdata:childkey="" />  

msdata:Relationship 注釈の属性は、親子リレーションシップに関係する要素、および親キー子キーの要素、およびリレーションシップに関係する属性を識別します。 マッピング プロセスでは、この情報を使用して DataSet にテーブルを生成し、これらのテーブル間に主キーと外部キーのリレーションシップを作成します。

たとえば、次のスキーマ フラグメントは、 Order 要素とOrderDetail 要素を同じレベル (入れ子になっていない) で指定します。 スキーマは msdata:Relationship 注釈を指定します。この注釈は、これら 2 つの要素間の親子関係を指定します。 この場合、 msdata:Relationship 注釈を使用して明示的なリレーションシップを指定する必要があります。

 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
        <xs:element name="OrderDetail">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
       <xs:element name="Order">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
    </xs:choice>  
  </xs:complexType>  
</xs:element>  
   <xs:annotation>  
     <xs:appinfo>  
       <msdata:Relationship name="OrdOrdDetailRelation"  
          msdata:parent="Order"  
          msdata:child="OrderDetail"
          msdata:parentkey="OrderNumber"  
          msdata:childkey="OrderNo"/>  
     </xs:appinfo>  
  </xs:annotation>  

マッピング プロセスでは、Relationship 要素を使用して、Order テーブルの OrderNumber 列と DataSetOrderDetail テーブルの OrderNo 列の間に親子リレーションシップを作成します。 マッピング プロセスでは、リレーションシップのみが指定されます。リレーショナル データベースの主キー/外部キー制約と同様に、これらの列の値に対する制約は自動的には指定されません。

このセクションにて

入れ子になったスキーマ要素間の暗黙的な関係をマップする
XML スキーマで入れ子になった要素が検出されたときに DataSet で暗黙的に作成される制約と関係について説明します。

入れ子になった要素に対して指定されたマップ関係
XML スキーマの入れ子になった要素に対して DataSet でリレーションシップを明示的に設定する方法について説明します。

入れ子のない要素間の関係を指定する
入れ子になっていない XML スキーマ要素間の DataSet でリレーションを作成する方法について説明します。

XML スキーマ (XSD) からの DataSet リレーショナル構造の派生
XML スキーマ定義言語 (XSD) スキーマから作成される DataSet のリレーショナル構造 (スキーマ) について説明します。

XML スキーマ (XSD) 制約を DataSet 制約にマッピングする
DataSet で一意キー制約と外部キー制約を作成するために使用される XML スキーマ要素について説明します。

こちらも参照ください