为什么EF不支持对实现IEnumerable的类型的预测?

时间:2013-09-20 17:14:17

标签: c# .net entity-framework ienumerable dbcontext

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

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

但如果MyClass实施IEnumerable界面,则EF会抛出NotSupportedException

我想知道这种奇怪的意思。

1 个答案:

答案 0 :(得分:1)

我认为它与此问题有关:How do I load related entities of type IEnumerable<T>,其中会询问为何导航属性无法实现IEnumerable

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

  

//不支持实现IEnumerable的类型

那里没有太多解释。

但是,对于集合属性,我可以看到为什么至少需要ICollection才有意义,因为必须在集合中添加和删除对象(IEnumerable没有{{1} }和Add方法)。

我认为实施Delete的预测类型的情况要么被认为太难以支持,要么被忽视。