1

我正在为 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()}

枚举此查询会导致异常 - “无法解析 Entities.VideoGame 的属性键”。现在,如果我按 v.Developer.Id 分组,它可以工作,但我无法选择 Name 列并在结果中显示它。我可以按 v.Developer.Name 进行分组,但这似乎不对,因为两个开发人员可能具有相同的名称。

我知道当前的 Linq 提供程序不再被开发,但希望对这种情况提出任何建议。

4

1 回答 1

1

怎么样

from v in session.Linq<VideoGame>()
group by v.Developer into developerGroup
select new {key = developerGroup.Key, count = developerGroup.Count()}

似乎group by在 2.1 NHibernate LINQ 提供程序中已损坏。不久前,Steve Strong在后备箱中写了一篇博客,所以如果您有足够的冒险精神并且不愿意等待 3.0,那么这可能是一个选择。group by

或者您可以使用类似这样的蛮力解决方案

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()};
于 2010-01-20T14:37:41.190 回答