Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W schemacie języka definicji schematu XML (XSD) unikatowy element określa ograniczenie unikatowości elementu lub atrybutu. W procesie przekładu schematu XML na schemat relacyjny, unikatowe ograniczenie określone dla elementu lub atrybutu w schemacie XML jest odwzorowywane na unikatowe ograniczenie w DataTable w odpowiadającym mu wygenerowanym DataSet.
W poniższej tabeli przedstawiono atrybuty msdata , które można określić w unikatowym elemecie.
Nazwa atrybutu | Opis |
---|---|
msdata:ConstraintName | Jeśli ten atrybut zostanie określony, jego wartość jest używana jako nazwa ograniczenia. W przeciwnym razie atrybut name udostępnia wartość nazwy ograniczenia. |
msdata:PrimaryKey | Jeśli PrimaryKey="true" element jest obecny w unikatowym elemecie, zostanie utworzone unikatowe ograniczenie z właściwością IsPrimaryKey ustawioną na true. |
W poniższym przykładzie przedstawiono schemat XML, który używa unikatowego elementu do określenia ograniczenia unikatowości.
<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>
Unikatowy element w definicji schematu określa, że dla wszystkich elementów Customers w instancji dokumentu wartość elementu podrzędnego CustomerID musi być unikatowa. Podczas tworzenia zestawu danych proces mapowania odczytuje ten schemat i generuje następującą tabelę:
Customers (CustomerID, CompanyName, Phone)
Proces mapowania tworzy również unikatowe ograniczenie w kolumnie CustomerID , jak pokazano w poniższym zestawie danych. (Dla uproszczenia wyświetlane są tylko odpowiednie właściwości).
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
W generowanym zestawie danych właściwość IsPrimaryKey jest ustawiona na wartość False dla unikatowego ograniczenia. Unikalna właściwość kolumny wskazuje, że wartości kolumny CustomerID muszą być unikalne (ale mogą być odwołaniem o wartości null określonym przez właściwość AllowDBNull kolumny).
Jeśli zmodyfikujesz schemat i ustawisz opcjonalną wartość atrybutu msdata:PrimaryKey na true, w tabeli zostanie utworzone unikatowe ograniczenie. Właściwość kolumny AllowDBNull jest ustawiona na wartość False, a właściwość IsPrimaryKey ograniczenia ustawiona na wartość True, co spowoduje, że kolumna CustomerID będzie kolumną klucza podstawowego.
Można określić unikatowe ograniczenie kombinacji elementów lub atrybutów w schemacie XML. W poniższym przykładzie pokazano, jak określić, że kombinacja wartości CustomerID i CompanyName musi być unikatowa dla wszystkich klientów w dowolnym wystąpieniu, dodając kolejny element xs:field w schemacie.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Jest to ograniczenie utworzone w wynikowym zestawie danych.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False