1

NHibernate(バージョン2.1)用の現在のLinqプロバイダーを使用しています。

私にはVideoGameとGameDeveloperの2つのエンティティがあり、それらの間には多対1の関係があります。私はこの種のクエリを実行しようとしています。これは、各ゲーム開発者が持っているビデオゲームの数をカウントします。

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

このクエリを列挙すると、「Entities.VideoGameのプロパティKeyを解決できませんでした」という例外が発生します。ここで、v.Developer.Idでグループ化すると機能しますが、[名前]列を選択して結果に表示することはできません。v.Developer.Nameでグループ化することもできますが、2人の開発者が同じ名前を持っている可能性があるため、正しくないようです。

現在の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 by2.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 に答える