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.
O keyref elemento permite estabelecer vínculos entre elementos em um documento. Isso é semelhante a uma relação de chave estrangeira em um banco de dados relacional. Se um esquema especificar o elemento keyref, o elemento será convertido durante o processo de mapeamento de esquema em uma restrição de chave estrangeira correspondente nas colunas das tabelas do DataSet. Por padrão, o keyref elemento também gera uma relação, com as propriedades ParentTable, ChildTable, ParentColumn e ChildColumn especificadas na relação.
A tabela a seguir descreve os msdata atributos que você pode especificar no keyref elemento.
| Nome do atributo | Descrição |
|---|---|
| msdata:ConstraintOnly | Se ConstraintOnly="true" for especificado no keyref elemento no esquema, uma restrição será criada, mas nenhuma relação será criada. Se esse atributo não for especificado (ou for definido como False), a restrição e a relação serão criadas no DataSet. |
| msdata:ConstraintName | Se o ConstraintName atributo for especificado, seu valor será usado como o nome da restrição. Caso contrário, o name atributo do keyref elemento no esquema fornece o nome da restrição no DataSet. |
| msdata:UpdateRule | Se o UpdateRule atributo for especificado no keyref elemento no esquema, seu valor será atribuído à UpdateRule propriedade de restrição no DataSet. Caso contrário, a UpdateRule propriedade será definida como Cascade. |
| msdata:DeleteRule | Se o DeleteRule atributo for especificado no keyref elemento no esquema, seu valor será atribuído à DeleteRule propriedade de restrição no DataSet. Caso contrário, a DeleteRule propriedade será definida como Cascade. |
| msdata:AcceptRejectRule | Se o AcceptRejectRule atributo for especificado no keyref elemento no esquema, seu valor será atribuído à AcceptRejectRule propriedade de restrição no DataSet. Caso contrário, a AcceptRejectRule propriedade será definida como None. |
O exemplo a seguir contém um esquema que especifica as key relações entre keyref o OrderNumber elemento filho do Order elemento e o OrderNo elemento filho do OrderDetail elemento.
No exemplo, o OrderNumber elemento filho do OrderDetail elemento refere-se ao OrderNo elemento filho chave do Order elemento.
<xs:schema id="MyDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="OrderDetail">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNo" type="xs:integer" />
<xs:element name="ItemNo" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNumber" type="xs:integer" />
<xs:element name="EmpNumber" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="OrderNumberKey" >
<xs:selector xpath=".//Order" />
<xs:field xpath="OrderNumber" />
</xs:key>
<xs:keyref name="OrderNoRef" refer="OrderNumberKey">
<xs:selector xpath=".//OrderDetail" />
<xs:field xpath="OrderNo" />
</xs:keyref>
</xs:element>
</xs:schema>
O processo de mapeamento de esquema XSD (linguagem de definição de esquema XML) produz o seguinte DataSet com duas tabelas:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Além disso, o DataSet define as seguintes restrições:
Uma restrição exclusiva na
Ordertabela.Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: FalseUma relação entre as tabelas
OrdereOrderDetail. ANestedpropriedade é definida comoFalseporque os dois elementos não estão aninhados no esquema.ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: FalseUma restrição de chave estrangeira na tabela
OrderDetail.ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber