我有一个带有集合的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警告 - 这样做有什么危险吗?
答案 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