オブジェクトに対してグループ化を実行できますか?Entity Framework Groupオブジェクトまたは複合型での参照
public class MyObject {
public int SomeValue { get; set; }
public string SomeName { get; set; }
public string SomeOtherProperty { get; set; }
}
はもちろん、私は、次の操作を行うことができます::Item.MyObjectのような単純なオブジェクトである
from item in context.Items
group item by item.MyObject
select ...
しかし
from item in context.Items
group item by new { item.SomeValue, item.SomeName, item.SomeOtherProperty }
select ...
のプロパティの多くのオブジェクトによってグループ化する際に、このアプローチは面倒でエラーが起こりやすい。
上記のコードでは、「GroupByメソッドへの呼び出しのキーセレクター型が、基礎となるストアプロバイダーでは比較できません」というNotSupportedExceptionが発生します。 EqualsとGetHashcodeをオーバーライドしても効果はありません。本当の問題は、エンティティフレームワークがSQLを表現する方法を知らないということですね。
EFモデルの「MyObject」部分ですか?私はMyObject(MyObject:Itemはn:1)のナビゲーションプロパティで同様のことをすることができます。生成されたSQLは恐ろしいですが、少なくとも動作します。 –
実際にはComplexTypeです。つまり、EFはオブジェクトタイプを知っています。すべてのプロパティが実際に同じテーブルに存在するため、ナビゲーションプロパティを使用していた場合よりも、結果として得られるSQLの方がはるかにクリーンであることが期待できます( – mindlessgoods