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, você pode especificar uma restrição de chave em um elemento ou atributo usando o key elemento. O elemento ou atributo no qual uma restrição de chave é especificada deve ter valores exclusivos em qualquer instância de esquema e não pode ter valores nulos.
A restrição de chave é semelhante à restrição exclusiva, exceto que a coluna na qual uma restrição de chave é definida não pode ter valores nulos.
A tabela a seguir descreve os msdata atributos que você pode especificar no key 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, a propriedade de IsPrimaryKey restrição será definida como true, tornando-a uma chave primária. A AllowDBNull propriedade de coluna é definida como false, pois as chaves primárias não podem ter valores nulos. |
Ao converter o esquema em que uma restrição de chave é especificada, o processo de mapeamento cria uma restrição exclusiva na tabela, definindo a propriedade da coluna AllowDBNull como false para cada coluna na restrição. A IsPrimaryKey propriedade da restrição exclusiva também é definida como, false a menos que você tenha especificado msdata:PrimaryKey="true" no key elemento. Isso é idêntico a uma restrição exclusiva no esquema no qual PrimaryKey="true".
No exemplo de esquema a seguir, o key elemento especifica a restrição de chave no CustomerID elemento.
<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>
O key elemento especifica que os valores do CustomerID elemento filho do Customers elemento devem ter valores exclusivos e não podem ter valores nulos. Ao traduzir o esquema XSD (linguagem de definição de esquema XML), o processo de mapeamento cria a seguinte tabela:
Customers(CustomerID, CompanyName, Phone)
O mapeamento de esquema XML também cria um UniqueConstraint na CustomerID coluna, conforme mostrado no seguinte DataSet. (Para simplificar, somente propriedades relevantes são mostradas.)
DataSetName: MyDataSet
TableName: customers
ColumnName: CustomerID
AllowDBNull: False
Unique: True
ConstraintName: KeyCustID
Table: customers
Columns: CustomerID
IsPrimaryKey: True
DataSet No que é gerado, a IsPrimaryKey propriedade do UniqueConstraint é definida true como porque o esquema especifica msdata:PrimaryKey="true" no key elemento.
O valor da ConstraintName propriedade do UniqueConstraint no DataSet é o valor do msdata:ConstraintName atributo especificado no key elemento no esquema.