Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Element keyref umożliwia ustanawianie łączy między elementami w dokumencie. Jest to podobne do relacji klucza obcego w relacyjnej bazie danych. Jeśli schemat określa element keyref, jest on konwertowany w trakcie mapowania schematu na odpowiadające ograniczenie klucza obcego dla kolumn w tabelach DataSet. Domyślnie element keyref generuje również relację, w której określono tabele ParentTable, ChildTable oraz właściwość ParentColumn, wraz z innymi właściwościami ChildColumn używanymi w tej relacji.
W poniższej tabeli przedstawiono atrybuty, które można określić w elemencie msdatakeyref.
| Nazwa atrybutu | Opis |
|---|---|
| msdata:ConstraintOnly | Jeśli parametr ConstraintOnly="true" zostanie określony w keyref elemecie w schemacie, zostanie utworzone ograniczenie, ale nie zostanie utworzona żadna relacja. Jeśli ten atrybut nie zostanie określony (lub jest ustawiony na Fałsz), zarówno ograniczenie, jak i relacja są tworzone w DataSet. |
| msdata:ConstraintName |
ConstraintName Jeśli atrybut jest określony, jego wartość jest używana jako nazwa ograniczenia.
name W przeciwnym razie atrybut keyref elementu w schemacie udostępnia nazwę ograniczenia w zestawie danych. |
| msdata:UpdateRule |
UpdateRule Jeśli atrybut jest określony w elemecie keyref w schemacie, jego wartość jest przypisywana do UpdateRule właściwości ograniczenia w zestawie danych. W przeciwnym razie UpdateRule właściwość jest ustawiona na Cascade. |
| msdata:DeleteRule |
DeleteRule Jeśli atrybut jest określony w elemecie keyref w schemacie, jego wartość jest przypisywana do DeleteRule właściwości ograniczenia w zestawie danych. W przeciwnym razie właściwość DeleteRule jest ustawiona na Cascade. |
| msdata:AcceptRejectRule |
AcceptRejectRule Jeśli atrybut jest określony w elemecie keyref w schemacie, jego wartość jest przypisywana do AcceptRejectRule właściwości ograniczenia w zestawie danych. W przeciwnym razie właściwość AcceptRejectRule jest ustawiona na Brak. |
Poniższy przykład zawiera schemat określający relacje między elementem podrzędnym OrderNumber elementu Order a elementem podrzędnym OrderNo elementu OrderDetail.
W przykładzie element podrzędny OrderNumber elementu OrderDetail odnosi się do głównego elementu podrzędnego OrderNo elementu Order.
<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>
Proces mapowania schematu XML Schema Definition Language (XSD) produkuje następujący element DataSet z dwiema tabelami.
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Ponadto definiuje DataSet następujące ograniczenia:
Unikatowe ograniczenie w
Ordertabeli.Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: FalseRelacja między tabelami
OrderiOrderDetail. WłaściwośćNestedjest ustawiona naFalse, ponieważ dwa elementy nie są zagnieżdżone w schemacie.ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: FalseOgraniczenie klucza obcego w tabeli
OrderDetail.ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber