2009-12-31 54 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