在NH 3.0 GA中是否仍然不支持LINQ group by
或者我做错了什么?
我的LINQ是:
var q = from p in session.Query<Product>()
group p by p.Category into g
select new {
Category = g.Key,
TotalValue = g.Sum(p => p.UnitsInStock * p.Price)
};
Witch被转换为以下SQL:
select category1_.Id as col_0_0_,
cast(sum(product0_.UnitsInStock*product0_.Price) as DOUBLE PRECISION) as col_1_0_,
category1_.Id as Id0_,
category1_.Name as Name0_
from [Product] product0_
left outer join [Category] category1_ on product0_.Category_id=category1_.Id
group by category1_.Id
由于category1_.Name不在group by子句中,因此会生成SqlException。
这是一个已知的错误吗?有解决方法吗? 这个LINQ在EF 4中运行良好。
答案 0 :(得分:2)
NHibernate的group by
在通过它进行分组时不够智能地添加实体的所有属性。
另一种方法是仅在选择列表中使用Id,然后在Linq-to-objects中使用session.Load
来投影Category实体。