Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O keyref elemento permite-lhe estabelecer ligações entre elementos dentro de um documento. Isso é semelhante a uma relação de chave estrangeira em um banco de dados relacional. Se um esquema especificar o keyref elemento, o elemento é convertido durante o processo de mapeamento do esquema para uma restrição de chave estrangeira correspondente nas colunas das tabelas de DataSet. Por padrão, o keyref elemento também gera uma relação, com ParentTable, ChildTable, ParentColumn e ChildColumn propriedades especificadas na relação.
A tabela seguinte descreve os msdata atributos que pode especificar no keyref elemento.
| Nome do atributo | Descrição |
|---|---|
| msdata:ConstraintOnly | Se ConstraintOnly="true" for especificado no keyref elemento do esquema, é criada uma restrição, mas nenhuma relação é criada. Se esse atributo não for especificado (ou estiver definido como False), a restrição e a relação serão criadas no DataSet. |
| msdata:ConstraintName | Se o ConstraintName atributo for especificado, o seu valor é usado como 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 do esquema, o seu valor é atribuído à UpdateRule propriedade de restrição no DataSet. Caso contrário, a UpdateRule propriedade está definida para Cascata. |
| msdata:DeleteRule | Se o DeleteRule atributo for especificado no keyref elemento do esquema, o seu valor é atribuído à DeleteRule propriedade de restrição no DataSet. Caso contrário, a DeleteRule propriedade está definida para Cascata. |
| msdata:AcceptRejectRule | Se o AcceptRejectRule atributo for especificado no keyref elemento do esquema, o seu valor é atribuído à AcceptRejectRule propriedade de restrição no DataSet. Caso contrário, a AcceptRejectRule propriedade está definida para Nenhuma. |
O exemplo seguinte contém um esquema que especifica as relações de key e keyref entre o elemento filho OrderNumber do elemento Order e o elemento filho OrderNo do elemento OrderDetail.
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 esquemas da XML Schema Definition Language (XSD) produz o seguinte DataSet com duas tabelas:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Além disso, define DataSet as seguintes restrições:
Uma restrição única na
Ordertabela.Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: FalseUma relação entre as
OrdereOrderDetailtabelas. A propriedadeNestedé definida paraFalseporque 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