1

如果之前已经回答过,请指点我;我找不到任何类似的东西。

我的情况:

  • 1个数据网格视图
  • 由 BindingSource 绑定到 DataSet (EF) 中的 table1
  • table1 与 table2 有数据关系(一对一)

现在,我需要显示子关系中的一列或多列,同时保持从 ParentTable (=table1) 追加、更新和删除行的能力。

我尝试将 BindingSource 指向 DataRelation,但是,这只显示来自一个表的数据。作为另一种选择,我现在正在尝试使用表达式创建一个计算列,使用以下方法查找子数据:

[table1].Columns.Add("[columnname]", GetType(System.String), _
    "Child([datarelation name]).[columnname from childtable]")

但是,这会因“无法在位置 1 处解释标记 'Child'”而失败。我猜这是由于程序需要多个结果。所以,我的问题是:\

  1. 我可以将其更改为仅期望 1 个结果并报告此结果,以使新列报告子数据吗?
  2. 是否有一些我没有看到的最佳实践?
4

1 回答 1

0

对子列的引用必须在聚合函数中,因为子关系可能返回多行。如果您的父行映射到一个子行,您还可以使用一些聚合函数(例如 Min、Max、Sum、Avg)来获得与列值本身相同的结果。例如,这将起作用:

[table1].Columns.Add("[columnname]", GetType(System.String), "Sum(Child([datarelation name]).[columnname from childtable])")
于 2018-05-10T07:10:11.273 回答