【问题标题】:Linq to NHibernate and Group ByLinq to NHibernate 和 Group By
【发布时间】:2010-01-21 05:10:00
【问题描述】:

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

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

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

【问题讨论】:

  • 不。我猜我得等到 NHibernate 3.0 和新的 Linq 提供程序。

标签: nhibernate linq-to-nhibernate


【解决方案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 blogged group bytrunk 中,所以如果您有足够的冒险精神并且不愿意等待 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()};

【讨论】:

  • 请注意,上面的蛮力会从数据库中获取所有视频游戏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 2023-04-08
相关资源
最近更新 更多