次の方法で共有


キー XML スキーマ (XSD) 制約を DataSet 制約にマップする

スキーマでは、キー要素を使用して、要素または属性に キー 制約を指定できます。 キー制約が指定される要素または属性は、どのスキーマ インスタンスでも一意の値を持つ必要があり、null 値を持つことはできません。

キー制約は一意制約に似ていますが、キー制約が定義されている列に null 値を指定することはできません。

次の表は、キー要素で指定できる msdata 属性の概要を示しています。

属性名 説明
msdata:ConstraintName この属性を指定すると、その値が制約名として使用されます。 それ以外の場合、 name 属性は制約名の値を提供します。
msdata:PrimaryKey PrimaryKey="true"が存在する場合、IsPrimaryKey 制約プロパティは true に設定されるため、主キーになります。 AllowDBNull 列プロパティは false に設定されます。主キーには null 値を設定できないためです。

キー制約が指定されているスキーマを変換する場合、マッピング プロセスでは、制約内の各列に 対して AllowDBNull 列プロパティが false に設定された一意の制約がテーブルに作成されます。 キー要素にを指定しない限り、一意制約の msdata:PrimaryKey="true" プロパティも false に設定されます。 これは、 PrimaryKey="true"するスキーマの一意制約と同じです。

次のスキーマの例では、 キー 要素は CustomerID 要素のキー制約を指定します。

<xs:schema id="cod"  
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
  <xs:element name="Customers">  
    <xs:complexType>  
      <xs:sequence>  
        <xs:element name="CustomerID" type="xs:string" minOccurs="0" />  
        <xs:element name="CompanyName" type="xs:string" minOccurs="0" />  
       <xs:element name="Phone" type="xs:string" />  
     </xs:sequence>  
   </xs:complexType>  
 </xs:element>  
<xs:element name="MyDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
      <xs:element ref="Customers" />  
    </xs:choice>  
  </xs:complexType>  
   <xs:key  msdata:PrimaryKey="true"  
       msdata:ConstraintName="KeyCustID"  
          name="KeyConstCustomerID" >  
     <xs:selector xpath=".//Customers" />  
     <xs:field xpath="CustomerID" />  
    </xs:key>  
 </xs:element>  
</xs:schema>

キー要素は、Customers 要素の CustomerID 子要素の値が一意の値を持つ必要があり、null 値を持つことができないことを指定します。 XML スキーマ定義言語 (XSD) スキーマを翻訳する場合、マッピング プロセスによって次の表が作成されます。

Customers(CustomerID, CompanyName, Phone)  

XML スキーマ マッピングでは、次のに示すように、CustomerID 列に DataSet も作成されます。 (わかりやすくするために、関連するプロパティのみが表示されます)。

      DataSetName: MyDataSet  
TableName: customers  
  ColumnName: CustomerID  
      AllowDBNull: False  
      Unique: True  
  ConstraintName: KeyCustID  
      Table: customers  
      Columns: CustomerID
      IsPrimaryKey: True  

生成される DataSet では、スキーマがキー要素にを指定するため、UniqueConstraintmsdata:PrimaryKey="true" プロパティは true に設定されます。

DataSetUniqueConstraintConstraintName プロパティの値は、スキーマのキー要素で指定された msdata:ConstraintName 属性の値です。

こちらも参照ください