EF Code First - 模型,什么时候应该在构造函数中实例化属性?

时间:2012-11-21 13:45:32

标签: entity-framework ef-code-first

我想知道在某个地方何时需要实例化一个很好的解释 在模型类构造函数中以及何时不需要?

MS EF网站上的文档很好,涵盖了很多相关主题

关系和导航属性 - http://msdn.microsoft.com/en-us/data/jj713564
使用API​​ http://msdn.microsoft.com/en-us/data/jj591620%20%22Configuring%20relationships%20with%20API配置关系

实体框架类库http://msdn.microsoft.com/en-us/library/hh289362%28v=vs.103%29.aspx

并且我也通过阅读书籍编程实体框架 - 代码优先由Julia Lerman

我想更好地了解何时需要在Model构造函数中实例化属性 我在模型构造函数中的MS文档和Book中看到了带有和没有newed up属性的Samples。 很可能有一个很好的理由可以解释为什么有些解决方案会使用带有新对象的构造函数而不使用其他解决方案 好像Virtual ICollectionnew List<>而复杂类型有new RefObj。 但ModelObject类型的简单virtual navigation property是没有新的。

我可以在不知道每个约定类的内部结构的情况下坚持使用模式。还是我应该阅读另一个话题?

1 个答案:

答案 0 :(得分:1)

你永远需要在模型构造函数中实例化一个属性,以便EF工作,但它使它更方便。

例如,如果您有一个订单类,并且它具有订单详细信息的子项,并且您想要将新订单添加到数据库中。

不初始化OrderDetails

var order = new Order();
order.OrderDetails.Add(new OrderDetail()); // this would error because OrderDetails is null

一个选项可能是调用order.OrderDetails = new List(); 在使用Add()之前,您需要在任何想要使用Add()的地方重复该代码。相反,您可以将该代码放在构造函数中,然后OrderDetails就可以用于所有新创建的订单。