0

将实体映射到匿名类型或使用无参数构造函数的类型很容易:

context.EntitiesSet.Select( entity => new MyClass { Prop = entity.Id } );

但是如果MyClass实现IEnumerable了接口,那么 EF 会抛出NotSupportedException.

我想知道这个奇怪的地方有什么意义。

4

1 回答 1

1

我认为这与这个问题有关:How do I load related entity of type IEnumerable<T>,其中询问为什么导航属性无法实现IEnumerable

在当前的 EF 6 源代码中,检查是否支持实现类型。那里只在评论中说

// 不支持实现 IEnumerable 的类型

那里没有太多解释。

但是,对于集合属性,我可以看到为什么至少需要 s 是有意义ICollection的,因为可以从集合中添加和删除对象是必不可少的(IEnumerable没有AddDelete方法)。

我认为投影类型实现的情况IEnumerable要么被认为太不常见而无法支持,要么被忽略了。

于 2013-09-20T19:55:54.620 回答