你会如何用ORM解决这个问题?
这是一个假设(简化)的例子:
我有一张城市表:
1 – 纽约
2 – 伦敦
3 – 旧金山
4 – 新奥尔良
我有一张分数表:
(第一列唯一主键,第二个月代码,第三个FK到城市,第四个分数(int))
1 – 352 – 1 – 9
2 – 352 – 2 – 10
对于352个月,仅提到纽约和伦敦.
当我在用户界面中向用户展示时,我想要一个显示本月所有4个城市的网格.并且为San Fran和New Orleans城市提供空白(空白).
使用ORM的最佳方法是什么?以“模型”形式返回Business Objects,然后将它们转换为“viewmodel”形式?你是如何处理ORM中的类似情况的?我之前在ADO.NET中使用我的SQL语句处理过这个问题,但是在ORM中从未做过这种事情,我正在寻找建议,指导或方法.
最佳答案 我们实际上实践了一种命令查询分离(Greg Young版本 – 而不是Meyer版本),所以我们至少会使用NHibernate ICriteria来选择我们想要的细节,然后使用AliasToBeanTransformer将它们直接注入DTO.
对于我们最复杂的实体,我们实际上有一个单独的表格,屏幕需要显示折叠成单行(也称为OLAP)的所有细节.然后我们可以直接针对该表运行查询,这会绕过加载复杂实体的成本,该实体包含的信息比屏幕需要的信息多得多.