如何在dataset.relations上对同一表(使用不同的列)建立2个关系?

时间:2018-10-25 14:15:44

标签: vb.net dataset relation

我有一个表客户和一个表国家,客户有2列引用国家ID(客户来自的国家的ID,以及客户希望将其包裹发送到的国家的ID),而dataset.relations很有用用1列(或更长的时间,只要它们不同)融合表,我无法弄清楚如何显示包含客户信息以及对应于ID的两个国家/地区的名称的表。

我只跟随客户所在的国家

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 :(得分:1)

答案被隐藏在DataColumn.Expression属性文档中“备注”部分的一个段落中。

  

父母/子女关系参考
  ....
  当一个孩子有多个   父行,请使用Parent(RelationName).ColumnName。例如,   Parent(RelationName)。Price引用父表的名为   通过关系的价格。

换句话说,换句话说,当子表上有多个关系时,需要在表达式语法中显式给出该关系的名称

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