共用方式為


將 key XML 結構描述 (XSD) 條件約束對應至資料集條件約束

您可以在結構描述使用 key 元素,指定元素或屬性的索引鍵限制式。 具有指定索引鍵條件約束的項目或屬性,在任何結構描述執行個體中都必須具有唯一的值,且不可具有 Null 值。

索引鍵條件約束類似唯一的條件約束,唯一的不同處定義索引鍵條件約束的資料行不能有 Null 值。

下表列出您可在 key 元素指定的 msdata 屬性。

Attribute name 描述
msdata:ConstraintName 如果指定這個屬性,則它的值會被當成條件約束名稱使用。 否則,會由 name 屬性提供限制式名稱的值。
msdata:PrimaryKey 如果出現 PrimaryKey="true",則 IsPrimaryKey 限制式屬性會設為 true,使其成為主索引鍵。 AllowDBNull 資料行屬性設為 false,因為主索引鍵不能具有 Null 值。

已指定索引鍵限制式的結構描述在轉換過程,對應處理序會在資料表建立唯一的限制式,而限制式每個資料行的 AllowDBNull 資料行屬性會設為 false。 除非您已經在 key 元素指定 msdata:PrimaryKey="true",不然唯一的限制式的 IsPrimaryKey 屬性也會被設為 false。 它與結構描述 (其中 PrimaryKey="true") 中唯一的條件約束相同。

在下列結構描述範例,key 元素指定 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>

key 元素指定 Customers 元素的 CustomerID 元素子系值,必須具有唯一的值,且不可為 Null 值。 轉譯 XML 結構描述定義語言 (XSD) 結構描述的過程中,對應處理序會建立下表:

Customers(CustomerID, CompanyName, Phone)  

XML 結構描述對應也會在 CustomerID 資料行建立 UniqueConstraint,如下列 DataSet 所示。 (為了便於了解,此處僅顯示相關屬性)。

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

在產生的 DataSet,會將 UniqueConstraintIsPrimaryKey 屬性設為 true,因為結構描述在 key 元素指定了 msdata:PrimaryKey="true"

DataSet UniqueConstraint 中的 ConstraintName 屬性值,即是結構描述 key 元素指定的 msdata:ConstraintName 屬性值。

另請參閱