Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W schemacie można określić ograniczenie klucza dla elementu lub atrybutu key przy użyciu elementu . Element lub atrybut, na którym określono ograniczenie klucza, musi mieć unikatowe wartości w dowolnym wystąpieniu schematu i nie może mieć wartości null.
Ograniczenie klucza jest podobne do ograniczenia unikatowego, z tą różnicą, że kolumna, w której zdefiniowano ograniczenie klucza, nie może mieć wartości null.
W poniższej tabeli przedstawiono msdata atrybuty, które można określić w elemecie key .
| Nazwa atrybutu | Opis |
|---|---|
| msdata:ConstraintName | Jeśli ten atrybut zostanie określony, jego wartość jest używana jako nazwa ograniczenia.
name W przeciwnym razie atrybut udostępnia wartość nazwy ograniczenia. |
| msdata:PrimaryKey | Jeśli PrimaryKey="true" jest obecny, właściwość ograniczenia IsPrimaryKey jest ustawiona na true, co czyni go kluczem głównym. Właściwość kolumny AllowDBNull jest ustawiona na false, ponieważ klucze podstawowe nie mogą mieć wartości null. |
Podczas konwertowania schematu, w którym określono ograniczenie klucza, proces mapowania tworzy unikatowe ograniczenie w tabeli z właściwością kolumny AllowDBNull ustawioną na false dla każdej kolumny w ograniczeniu. Właściwość IsPrimaryKey unikatowego ograniczenia jest również ustawiona na false, chyba że określono msdata:PrimaryKey="true" na elemencie key. Jest to identyczne z unikatowym ograniczeniem w schemacie, w którym PrimaryKey="true".
W poniższym przykładzie schematu element key określa ograniczenie klucza na element 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>
Element key określa, że wartości CustomerID elementu podrzędnego Customers elementu muszą mieć unikatowe wartości i nie mogą mieć wartości null. Podczas tłumaczenia schematu języka definicji schematu XML (XSD) proces mapowania tworzy następującą tabelę:
Customers(CustomerID, CompanyName, Phone)
Mapowanie schematu XML tworzy również element UniqueConstraint w kolumnie CustomerID , jak pokazano poniżej DataSet. (Dla uproszczenia wyświetlane są tylko odpowiednie właściwości).
DataSetName: MyDataSet
TableName: customers
ColumnName: CustomerID
AllowDBNull: False
Unique: True
ConstraintName: KeyCustID
Table: customers
Columns: CustomerID
IsPrimaryKey: True
W generowanym DataSet właściwość IsPrimaryKey obiektu UniqueConstraint jest ustawiona na true , ponieważ schemat określa msdata:PrimaryKey="true" w elemencie key.
Wartość właściwości ConstraintName w obiekcie UniqueConstraint jest wartością atrybutu msdata:ConstraintName, określonego w elemencie key w schemacie.