实体框架代码First Instantiate Collection

时间:2014-02-10 02:43:09

标签: c# asp.net entity-framework

我有一个带有集合的EntityFramework对象,例如:

public class User
{
    public virtual ICollection<Page> Pages { get; set; }
}

最佳做法是什么 - 将它保留在构造函数中(或其他东西?)如果我将集合实例化为默认的空白列表,如下所示:

public class User
{
    public virtual ICollection<Page> Pages { get; set; }

    public User()
    {
        Pages = new List<Page>();
    }
}

然后我收到关于在构造函数中实例化虚拟属性的DevExpress / Code Analysis警告 - 这样做有什么危险吗?

2 个答案:

答案 0 :(得分:0)

不要实例化它,保留POCO对象,让EF按预期运行。 EF将为您实例化它们。您应该知道EF将填充由虚拟动态代理标记的导航属性。

答案 1 :(得分:0)

这将是一个更好的决定:

private readonly IList<Page> _page;

public User(IEnumerable<Page> page)
{
    _page = new List<Page>(page);
}

public IList<Page> Page
{
    get { return _page; }
}

使用约ICollection<>IEumerable<>IList<>时要小心,请参阅更多信息here