Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Med keyref elementet kan du upprätta länkar mellan element i ett dokument. Detta liknar en främmande nyckelrelation i en relationsdatabas. Om ett schema anger elementet keyref konverteras elementet under schemamappningsprocessen till en motsvarande sekundärnyckelbegränsning för kolumnerna i tabellerna i DataSet. Som standard genererar elementet keyref också en relation, med egenskaperna ParentTable, ChildTable, ParentColumn och ChildColumn angivna i relationen.
I följande tabell beskrivs de msdata attribut som du kan ange i elementet keyref .
| Attributnamn | Beskrivning |
|---|---|
| msdata:ConstraintOnly | Om ConstraintOnly="true" anges för elementet keyref i schemat skapas en begränsning, men ingen relation skapas. Om det här attributet inte har angetts (eller är inställt på False) skapas både villkoret och relationen i DataSet. |
| msdata:ConstraintName | Om attributet ConstraintName anges används dess värde som namnet på villkoret. I annat fall name innehåller attributet för elementet keyref i schemat villkorsnamnet i DataSet. |
| msdata:UpdateRule |
UpdateRule Om attributet anges i elementet keyref i schemat tilldelas dess värde till villkorsegenskapen UpdateRule i DataSet. Annars är egenskapen inställd på UpdateRuleCascade. |
| msdata:DeleteRule |
DeleteRule Om attributet anges i elementet keyref i schemat tilldelas dess värde till villkorsegenskapen DeleteRule i DataSet. Annars är egenskapen inställd på DeleteRuleCascade. |
| msdata:AcceptRejectRule |
AcceptRejectRule Om attributet anges i elementet keyref i schemat tilldelas dess värde till villkorsegenskapen AcceptRejectRule i DataSet. Annars är egenskapen inställd på AcceptRejectRuleIngen. |
Följande exempel innehåller ett schema som anger relationerna mellan key och keyref för det underordnade elementet OrderNumber till elementet Order och det underordnade elementet OrderNo till elementet OrderDetail.
I exemplet refererar OrderNumber-elementets underordnade element till OrderNo-elementets viktiga underordnade element i Order-elementet.
<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>
Schemamappningsprocessen för XML-schemadefinitionsspråk (XSD) skapar följande DataSet med två tabeller:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Dessutom DataSet definierar följande begränsningar:
Ett unikt villkor för tabellen
Order.Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: FalseEn relation mellan tabellerna
OrderochOrderDetail. EgenskapenNestedär inställd påFalseeftersom de två elementen inte är kapslade i schemat.ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: FalseEn utländsk nyckelbegränsning på
OrderDetail-tabellen.ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber