Создание отношений набора данных из схемы XML (XSD)

В DataSet, создается ассоциация между двумя или более столбцами путем установления родительско-дочернего отношения. Существует три способа представления DataSet отношения в языке описания XML-схем (XSD):

  • Укажите вложенные сложные типы.

  • Используйте заметку msdata:Relationship .

  • Укажите xs:keyref без аннотации msdata:ConstraintOnly.

Вложенные сложные типы

Вложенные определения сложных типов в схеме указывают связи элементов с родительскими дочерними элементами. Следующий фрагмент схемы XML показывает, что OrderDetail является дочерним элементом Order элемента.

<xs:element name="Order">
  <xs:complexType>
     <xs:sequence>
       <xs:element name="OrderDetail" />
           <xs:complexType>
           </xs:complexType>
     </xs:sequence>
  </xs:complexType>
</xs:element>

Процесс сопоставления схемы XML создает таблицы в DataSet, которые соответствуют вложенным сложным типам в схеме. Он также создает дополнительные столбцы, используемые в качестве родительских-дочерних столбцов для созданных таблиц. Обратите внимание, что эти родительские-дочерние столбцы указывают связи, которые не совпадают с указанием ограничений первичного ключа или внешнего ключа.

заметка msdata:Relationship

Заметка msdata:Relationship позволяет явно указывать родительско-дочерние связи между элементами в схеме, которые не являются вложенными. В следующем примере показана структура Relationship элемента.

<msdata:Relationship name="CustOrderRelationship"
msdata:parent=""
msdata:child=""
msdata:parentkey=""
msdata:childkey="" />

Атрибуты аннотации msdata:Relationship определяют элементы, участвующие в отношении родитель-потомок, а также элементы parentkey и атрибуты childkey, участвующие в этой связи. Процесс сопоставления использует эти сведения для создания таблиц в DataSet и для установления связей первичного ключа и внешнего ключа между этими таблицами.

Например, следующий фрагмент схемы указывает на элементы Order и OrderDetail на том же уровне (не вложены). Схема задает аннотацию msdata:Relationship, которая указывает отношение родителя и потомка между этими двумя элементами. В этом случае необходимо указать явную связь с помощью заметки msdata:Relationship .

 <xs:element name="MyDataSet" msdata:IsDataSet="true">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
        <xs:element name="OrderDetail">
          <xs:complexType>

          </xs:complexType>
       </xs:element>
       <xs:element name="Order">
          <xs:complexType>

          </xs:complexType>
       </xs:element>
    </xs:choice>
  </xs:complexType>
</xs:element>
   <xs:annotation>
     <xs:appinfo>
       <msdata:Relationship name="OrdOrdDetailRelation"
          msdata:parent="Order"
          msdata:child="OrderDetail"
          msdata:parentkey="OrderNumber"
          msdata:childkey="OrderNo"/>
     </xs:appinfo>
  </xs:annotation>

Процесс сопоставления использует элемент Relationship, чтобы создать взаимосвязь родитель-потомок между столбцом OrderNumber в таблице Order и столбцом OrderNo в таблице OrderDetail в Наборе данных. Процесс сопоставления указывает только связь; Он не автоматически задает ограничения значений в этих столбцах, как и ограничения первичного ключа или внешнего ключа в реляционных базах данных.

В этом разделе

Сопоставление неявных связей между вложенными элементами схемы Описывает ограничения и связи, которые неявно создаются в DataSet при наличии вложенных элементов в схеме XML.

Сопоставление связей, указанных для вложенных элементов Описывает, как явно задать отношения в DataSet вложенных элементах в схеме XML.

Указание отношений между элементами без вложения Описывает создание связей между DataSet элементами схемы XML, которые не вложены.

Извлечение реляционной структуры набора данных из схемы XML (XSD) Описывает реляционную структуру или схему, созданную на основе схемы DataSet определения схемы XML (XSD).

Сопоставление ограничений схемы XML (XSD) с ограничениями набора данных Описывает элементы схемы XML, используемые для создания уникальных и внешних ограничений ключей в наборе данных.

См. также