我正在使用NHibernate的当前Linq提供程序(版本2.1)。
我有两个实体:VideoGame和GameDeveloper,多对一 他们之间的关系。 我正在尝试执行此类查询,该查询计算数量 每个游戏开发者都有的视频游戏:
from v in session.Linq<VideoGame>()
group by v.Developer into developerGroup
select new {developerGroup.Key.Name, Count = developerGroup.Count()}
枚举此查询会导致异常 - “无法解决 属性实体的关键。视频游戏“。 现在,如果我按v.Developer分组。它可以工作,但我无法选择 命名列并在结果中显示它。我可以分组 v.Developer.Name,但它似乎不对,因为两个开发人员可能 具有相同的名称。
我知道目前的Linq提供商不再开发,但是 我将不胜感激任何关于这种情况的建议。
答案 0 :(得分:1)
怎么样
from v in session.Linq<VideoGame>()
group by v.Developer into developerGroup
select new {key = developerGroup.Key, count = developerGroup.Count()}
击> <击> 撞击>
在{2.1} NHibernate LINQ提供程序中似乎已经破坏了group by
。前一段时间史蒂夫·斯特朗blogged group by
在trunk,所以如果你有足够的冒险精神并且不愿意等到3.0,那么这可能是一种选择。
或者您可以使用像这样的强力解决方案
from v in (from vg in session.Linq<VideoGame>() select vg).ToList()
group by v.Developer into developerGroup
select new {developerGroup.Key.Name, Count = developerGroup.Count()};