Всем привет.
Позвольте поднять тему — у меня схожая проблема.
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>
Действительно, связь создается. Но и автоматическая при этом не пропадает.
Помогите, плиз, справиться с излишней самостоятельностью десериалайзера.