假设我有以下实体:
public class Post
{
public int Id { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
当我从数据库中检索一个 Post 对象时,我需要转换 Comments
收集到 EntityCollection<T>
这样我就可以检查有关集合的一些 EF4 相关数据,例如数据是否预先加载。
不幸的是,如果我尝试从 ICollection<T>
进行直接转换至 EntityCollection<T>
,我得到一个异常(exception),因为 Comments
属性是 System.Collections.Generic.List<T>
并且不能转换成 EntityCollection<T>
.
那么在使用代码优先时,我该如何获取关于集合的 EF 信息?
这可能更适合作为评论,但我希望 EF4 专家能够对此做出回应并解释发生了什么。我刚才在 CTP4 上问了下面的问题。一个回应来自 EF 4 食谱的作者,他说如果集合被声明为虚拟和 ICollection(发问者显然正在这样做),在运行时集合将被创建为 EntityCollection。这显然不会发生。
此外,Rowan Miller(他在 EF4 团队)写了一个更高级的选项,提问者之前曾指出该选项不起作用。这里发生了什么?难道现在的CTP不支持,而以前的CTP支持?
Using CreateSourceQuery in CTP4 Code First
我是一名优秀的程序员,十分优秀!