说我有以下实体:
public class Post
{
public int Id { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
当我从数据库中检索Post对象时,我需要将Comments
集合转换为EntityCollection<T>
,以便我可以检查有关集合的一些EF4相关数据,例如数据是否为渴望加载或不加载。
不幸的是,如果我尝试从ICollection<T>
到EntityCollection<T>
进行直接广告投放,由于Comments
属性为System.Collections.Generic.List<T>
而我得到一个例外无法转换为EntityCollection<T>
。
那么在使用代码优先时如何获取有关集合的EF信息呢?
答案 0 :(得分:2)
这可能更适合作为评论,但我希望EF4大师可以对此做出回应并解释发生了什么。我刚才在CTP4问了下面的问题。一个回复是来自EF 4食谱的作者,说在运行时,如果它被声明为虚拟和ICollection(提问者显然在做),那么集合将被创建为EntityCollection。这显然没有发生。
此外,Rowan Miller(谁在EF4团队中)写了一个更高级的选项,提问者之前表示这个选项不起作用。这里发生了什么?当前的CTP不支持这个,而前一个CTP不支持吗?
答案 1 :(得分:0)
只要您的POCO类符合requirements for change tracking proxy creation,代理就会用EntityCollection对象替换ICollection属性。乍一看,您的课程符合这些要求,但您还应确保将the ProxyCreationEnabled option设置为true。