为什么 EF 不支持对实现 IEnumerable 的类型进行投影
本文关键字:类型 投影 IEnumerable EF 不支持 实现 为什么 | 更新日期: 2023-09-27 18:32:14
很容易将实体映射到非同名类型或使用无参数构造函数映射到类型:
context.EntitiesSet.Select( entity => new MyClass { Prop = entity.Id } );
但是,如果MyClass
实现了IEnumerable
接口,则EF会抛出NotSupportedException
。
我想知道这种奇怪有什么意义。
我认为它与这个问题有关:如何加载 IEnumerableIEnumerable
.
在当前的 EF 6 源中,检查类型是否支持具体化。它只在评论中说
不支持实现 IEnumerable 的类型
那里没有太多解释。
但是,对于集合属性,我可以理解为什么至少需要 ICollection
s 是有意义的,因为必须在集合中添加和删除对象(IEnumerable
没有Add
和Delete
方法)。
我认为,投影类型实现IEnumerable
的情况要么被认为太罕见而无法支持,要么只是被忽视了。