Как сделать 2 отношения к одной и той же таблице (используя разные столбцы) на dataset.relations? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть таблица клиентов и страна таблицы, у клиентов есть 2 столбца, которые ссылаются на идентификатор страны (идентификатор страны, из которой находится клиент, и идентификатор страны, в которую клиент хочет отправить свои пакеты), тогда как dataset.relations полезенчтобы объединить таблицы, используя 1 столбец (или более, если они различаются), я не могу понять, как отобразить таблицу, содержащую информацию о клиенте, и ИМЯ обоих счетчиков, соответствующих идентификаторам.

Дляпросто страна клиента, которой я следую, следует

billOrderDataset.Relations.Add("clientCountryRelation",countriesTableCopy.Columns("id"), clientTableCopy.Columns("countryId"))

clientTableCopy.Columns.Add("countryName",GetType(String), "Parent.countryName")

, но после этого я не знаю, как добавить имя страны в столбец "deliveryCountryId", поскольку уже существует связь, использующая обе таблицыи столбец id из страны, так что в основном мне нужно что-то вроде

billOrderDataset.Relations.Add("clientCountryRelation2",countriesTableCopy.Columns("id"), clientTableCopy.Columns("DeliveryCountryId"))

clientTableCopy.Columns.Add("DeliveryCountryName",GetType(String), "Parent.countryName")

1 Ответ

0 голосов
/ 25 октября 2018

Ответ скрыт в абзаце внутри раздела «Примечания» в документации к свойству DataColumn.Expression .

Ссылка на связь родитель / потомок
....
Если дочерний элемент имеет более одной родительской строки, используйте Parent (RelationName) .ColumnName.Например, Parent (RelationName) .Price ссылается на столбец родительской таблицы с именем Price через отношение.

Итак, другими словами, когда у вас есть более одного отношения к дочерней таблице, вам нужноявно указать имя отношения в синтаксисе выражения

clientTableCopy.Columns.Add("countryName",GetType(String), "Parent(clientCountryRelation).countryName")
clientTableCopy.Columns.Add("DeliveryCountryName",GetType(String), "Parent(clientCountryRelation2).countryName")
...