Сопоставление ограничений keyref схемы XML (XSD) с ограничениями DataSet
Обновлен: November 2007
Элемент keyref позволяет устанавливать ссылки между элементами внутри документа. Это похоже на связь по внешнему ключу в реляционной базе данных. Если в схеме задан элемент keyref, то он преобразовывается в процессе сопоставления схемы в соответствующее ограничение внешнего ключа, налагаемое на столбцы в таблицах объекта DataSet. По умолчанию элемент keyref также формирует связь со свойствами ParentTable, ChildTable, ParentColumn и ChildColumn, указанными в этой связи.
В следующей таблице приведено описание атрибутов msdata, которые можно задать в элементе keyref.
Имя атрибута |
Описание |
---|---|
msdata:ConstraintOnly |
Если для элемента keyref в схеме задано ConstraintOnly="true", создается ограничение, но не создается связь. Если этот атрибут не задан (если ему установлено значение False), в объекте DataSet создается и ограничение, и связь. |
msdata:ConstraintName |
Если атрибут ConstraintName задан, его значение используется в качестве имени ограничения. В противном случае имя ограничения в объекте DataSet берется из атрибута name элемента keyref в схеме. |
msdata:UpdateRule |
Если атрибут UpdateRule задан в элементе keyref в схеме, его значение назначается свойству ограничения UpdateRule в объекте DataSet. В противном случае свойство UpdateRule имеет значение Cascade. |
msdata:DeleteRule |
Если атрибут DeleteRule задан в элементе keyref в схеме, его значение назначается свойству ограничения DeleteRule в объекте DataSet. В противном случае свойство DeleteRule имеет значение Cascade. |
msdata:AcceptRejectRule |
Если атрибут AcceptRejectRule задан в элементе keyref в схеме, его значение назначается свойству ограничения AcceptRejectRule в объекте DataSet. В противном случае свойство AcceptRejectRule имеет значение None. |
В следующем примере содержится схема, которая задает связи key и keyref между дочерним элементом OrderNumber элемента Order и дочерним элементом OrderNo элемента OrderDetail.
В этом примере дочерний элемент OrderNumber элемента OrderDetail ссылается на ключевой дочерний элемент OrderNo элемента Order.
<xs:schema id="MyDataSet"
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>
Процесс сопоставления схемы на языке XSD создает следующий объект DataSet с двумя таблицами:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Кроме того, этот объект DataSet определяет следующие ограничения:
Ограничение уникальности на таблицу Order.
Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: False
Связь между таблицами Order и OrderDetail. Свойство Nested имеет значение False, так как два этих элемента не являются вложенными в схеме.
ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: False
Ограничение внешнего ключа на таблицу OrderDetail.
ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber
См. также
Основные понятия
Формирование связей DataSet на основе схемы XML (XSD)
Другие ресурсы
Сопоставление ограничений схемы XML (XSD) с ограничениями DataSet