Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em um esquema XSD (linguagem de definição de esquema XML), o unique elemento especifica a restrição de exclusividade em um elemento ou atributo. No processo de tradução de um esquema XML em um esquema relacional, a restrição exclusiva especificada em um elemento ou atributo no esquema XML é mapeada para uma restrição exclusiva em DataTable no DataSet correspondente que é gerado.
A tabela a seguir descreve os msdata atributos que você pode especificar no unique elemento.
| Nome do atributo | Descrição |
|---|---|
| msdata:ConstraintName | Se esse atributo for especificado, seu valor será usado como o nome da restrição. Caso contrário, o name atributo fornece o valor do nome da restrição. |
| msdata:PrimaryKey | Se PrimaryKey="true" estiver presente no unique elemento, uma restrição exclusiva será criada com a IsPrimaryKey propriedade definida como true. |
O exemplo a seguir mostra um esquema XML que usa o unique elemento para especificar uma restrição de exclusividade.
<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>
O unique elemento no esquema especifica que, para todos os Customers elementos em uma instância de documento, o valor do CustomerID elemento filho deve ser exclusivo. Ao criar o DataSet, o processo de mapeamento lê esse esquema e gera a seguinte tabela:
Customers (CustomerID, CompanyName, Phone)
O processo de mapeamento também cria uma restrição exclusiva na CustomerID coluna, conforme mostrado no Conjunto de Dados a seguir. (Para simplificar, somente propriedades relevantes são mostradas.)
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
No DataSet que é gerado, a propriedade IsPrimaryKey é definida como False para a restrição exclusiva. A propriedade unique na coluna indica que os valores da coluna CustomerID devem ser exclusivos (mas podem ser nulos, conforme especificado pela propriedade AllowDBNull da coluna).
Se você modificar o esquema e definir o valor do atributo opcional msdata:PrimaryKey como True, a restrição exclusiva será criada na tabela. A AllowDBNull propriedade de coluna é definida como False e a IsPrimaryKey propriedade da restrição definida como True, tornando a CustomerID coluna uma coluna de chave primária.
Você pode especificar uma restrição exclusiva em uma combinação de elementos ou atributos no Esquema XML. O exemplo a seguir demonstra como especificar que uma combinação de valores CustomerID e CompanyName deve ser única para cada Customers em todas as instâncias, ao adicionar mais um elemento xs:field no esquema.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Essa é a restrição criada no Conjunto de Dados resultante.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False