2009-12-31 55 views
1

我使用当前的NHibernate(版本2.1)的Linq提供程序。Linq到NHibernate和组

我有两个实体:VideoGame和GameDeveloper,它们之间具有多对一的关系 。 我试图执行这种查询时,它计算的 视频游戏的每个游戏开发者数量:

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

枚举该查询导致异常 - “无法解析实体 属性键。的VideoGame”。 现在,如果我通过v.Developer.Id进行分组,但它不起作用,但我无法选择名称列并在结果中显示它。我可以将 v.Developer.Name分组,但它看起来并不正确,因为两个开发人员可能会使用 具有相同的名称。

我知道目前的Linq提供商不再被开发,但 将不胜感激关于这种情况的任何建议。

+0

你解决这个问题? – 2010-01-20 13:31:31

+0

没有。猜猜我将不得不等待NHibernate 3.0和新的Linq提供程序。 – 2010-01-20 19:29:38

回答

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 bloggedgroup 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()}; 
+1

也不起作用。 – 2010-01-20 19:28:39

+4

请注意,上面的蛮力从数据库中获取所有视频游戏。 – 2010-01-20 21:11:24

+0

至少现在工作+1 – 2010-03-13 21:13:39