是否可以通过对象执行组?实体框架组通过对象或ComplexType
from item in context.Items
group item by item.MyObject
select ...
凡Item.MyObject是一个简单的对象,如:
public class MyObject {
public int SomeValue { get; set; }
public string SomeName { get; set; }
public string SomeOtherProperty { get; set; }
}
很显然,我可以做到以下几点:通过对象有很多属性的分组时
from item in context.Items
group item by new { item.SomeValue, item.SomeName, item.SomeOtherProperty }
select ...
然而,这种方法乏味且容易出错。
上述代码产生并显示以下消息NotSupportedException异常:“对于该呼叫到‘的GroupBy’方法的关键选择器类型不是在底层存储提供可比”。重写Equals和GetHashcode没有任何作用。我猜测真正的问题是实体框架不知道如何表达SQL ...?
“MyObject”是EF模型的一部分吗?我可以用'MyObject'(其中MyObject:Item是n:1)上的导航属性做类似的事情。生成的SQL非常糟糕,但至少可以工作。 – 2012-04-21 10:51:48
它实际上是一个ComplexType。所以简而言之,EF意识到对象类型。因为所有的属性实际上都存在于同一个表中,所以我期望得到的SQL比使用导航属性更清晰(如果我当然可以得到它的话) – mindlessgoods 2012-04-21 16:26:19