我正在开发一个 WinForms 应用程序(.Net 3.5,没有 WPF),我希望能够在数据绑定 DataGridView 中显示外键查找。
这种关系的一个例子是我有一个 OrderLines 表。Orderlines 与 Products 具有外键关系,而 Products 又与 ProductTypes 具有外键关系。
我想要一个数据绑定的 DataGridView,其中每一行代表一个订单行,显示该行的产品和产品类型。
用户可以直接向网格添加或编辑订单行,并从组合框列中为订单行选择产品——这应该会更新产品类型列,在同一行中显示所选产品的产品类型。
到目前为止,我发现的最合适的方法是引入一个表示订单线的域对象,然后将 DataGridView 绑定到这些订单线的集合。然后,我将属性添加到暴露产品和产品类型的订单线对象,并引发相关的 notifypropertychanged 事件以使所有内容保持最新。然后,在我的 orderline 存储库中,我可以连接这个 orderline 对象和我数据库中的三个表之间的映射。
这适用于数据绑定方面,但必须在存储库中手动编写所有 OR 映射的代码似乎很糟糕。我认为 nHibernate 将能够帮助进行这种接线,但我正在努力通过所有外键进行映射 - 它们似乎工作正常(订单行产品的外键查找基于外键创建正确的产品对象)直到我尝试进行数据绑定,我无法获取数据绑定的 id 列来更新我的产品或产品类型对象。
我的一般方法是否在正确的范围内?如果是,什么是映射问题的好的解决方案?
或者,是否有更好的数据绑定行解决方案,包括我什至没有考虑过的外键查找?