共用方式為


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

XML 結構描述定義語言 (XSD) 結構描述中,unique 元素是用來指定元素或屬性上條件約束的唯一性。 在將 XML 結構描述轉譯到關聯式結構描述的處理序中,會將 XML 結構描述內項目或屬性上指定的唯一的條件約束 (Constraint),對應到所產生的對應 DataTableDataSet 的唯一的條件約束。

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

Attribute name 描述
msdata:ConstraintName 如果指定這個屬性,則它的值會被當成條件約束名稱使用。 否則,會由 name 屬性提供限制式名稱的值。
msdata:PrimaryKey 如果 unique 元素中出現 PrimaryKey="true",則會將 IsPrimaryKey 屬性設定為 true 以建立唯一的條件約束。

下列範例會顯示使用 unique 元素指定唯一性條件約束的 XML 結構描述。

<xs:schema id="SampleDataSet"
            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:integer"
           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="SampleDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
      <xs:element ref="Customers" />  
    </xs:choice>  
  </xs:complexType>  
   <xs:unique     msdata:ConstraintName="UCustID"     name="UniqueCustIDConstr" >       <xs:selector xpath=".//Customers" />       <xs:field xpath="CustomerID" />     </xs:unique>  
</xs:element>  
</xs:schema>  

結構描述中的 unique 元素指定文件執行個體中所有 Customers 元素的 CustomerID 子元素值都必須是唯一的。 建置 DataSet 的過程中,對應處理序會讀取這個結構描述並產生下列表格:

Customers (CustomerID, CompanyName, Phone)  

對應處理序也會在 CustomerID 資料行上建立唯一的條件約束,如下列 DataSet 所示。 (為了便於了解,此處僅顯示相關屬性)。

      DataSetName: MyDataSet  
TableName: Customers  
  ColumnName: CustomerID  
      AllowDBNull: True  
      Unique: True  
  ConstraintName: UcustID       Type: UniqueConstraint  
      Table: Customers  
      Columns: CustomerID
      IsPrimaryKey: False  

產生的 DataSet 中,唯一的條件約束的 IsPrimaryKey 屬性設定為 False。 資料行上的 unique 屬性指出 CustomerID 資料行值必須是唯一的 (但是也可以由資料行的 AllowDBNull 屬性指定為 Null 參考)。

如果您修改結構描述,並將選擇性的 msdata:PrimaryKey 屬性值設定為 True,即可在資料表上建立唯一的條件約束。 將 AllowDBNull 資料行屬性設定為 False,並將條件約束的 IsPrimaryKey 屬性設定為 True,即可使 CustomerID 資料行成為主索引鍵資料行。

您可以在 XML 結構描述中,將唯一的條件約束指定給合併的項目或屬性。 下列範例說明如何藉由在結構描述中新增其他的 xs:field 元素,指定 CustomerIDCompanyName 值組合,讓這些值在任何狀況中,對所有 Customers 而言都是唯一的。

      <xs:unique
         msdata:ConstraintName="SomeName"
         name="UniqueCustIDConstr" >
  <xs:selector xpath=".//Customers" />
  <xs:field xpath="CustomerID" />
  <xs:field xpath="CompanyName" />
</xs:unique>  

這是產生的 DataSet 中建立的條件約束。

ConstraintName: SomeName  
  Table: Customers  
  Columns: CustomerID CompanyName
  IsPrimaryKey: False  

另請參閱