说我有以下实体:

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信息?

最佳答案

作为评论,这可能更合适,但我希望EF4专家可以对此做出回应并解释发生了什么。不久前,我在CTP4上问了一个问题。一位来自EF 4食谱作者的回应说,在运行时,如果将该集合声明为virtual和ICollection(发问者显然正在这样做),则它将创建为EntityCollection。这显然没有发生。

此外,Rowan Miller(EF4团队的成员)编写了一个更高级的选项,发问者之前曾指出这是行不通的。这里发生了什么?当前的CTP是否不支持此功能,而上一个CTP是否支持?

Using CreateSourceQuery in CTP4 Code First

关于c# - 如何将EF4代码优先的ICollection转换为EntityCollection?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5035757/

10-12 14:55