Re: XML. Как прочитать связанные таблицы
От: Mihas  
Дата: 06.08.08 07:02
Оценка:
Всем привет.
Позвольте поднять тему — у меня схожая проблема.

Eсть xsd-схема:

    <xs:element name="DataSet">
      <xs:complexType>
        <xs:sequence>

          <xs:element name="Table1" >
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Field1" >
                <xs:element name="Field2"   />

                <xs:element name="Table2"  >
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="Field1" />
                      <xs:element name="Field2" />
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>


Как видно, таблица Table2 "вложена" в Table1.
Когда я загружаю схему в DataSet с помощью ReadXmlSchema, в обеих таблицах автоматически создаются поля Table1_Id и формируется связь Table2.Table1_Id -> Table1.Table1_Id.
Теперь мне нужно как-то научиться управлять созданием этого ключа. Т.е. самому описать в XSD какие именно поля должны связывать таблицы.

Немного поковырявшись, нашел такой способ:
      <xs:unique name="Constrain1">
        <xs:selector xpath=".//Table1" />
        <xs:field xpath="@link" />
      </xs:unique>

      <xs:keyref name="Relation1" refer="Constrain1">
        <xs:selector xpath=".//Table2" />
        <xs:field xpath="@link_up" />
      </xs:keyref>


Действительно, связь создается. Но и автоматическая при этом не пропадает.

Помогите, плиз, справиться с излишней самостоятельностью десериалайзера.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.