EF代码优先-模型,什么时候应该在构造函数中实例化属性



我想知道是否有一个很好的解释来解释何时需要实例化属性在模型类构造函数中,当它不必要时?

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

关系和导航属性-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文档和书中看到了示例,在Model构造函数中有和没有新的属性。一些解决方案使用带有newed Up对象的构造函数,而另一些则不使用,这很可能是有充分理由的
似乎Virtual ICollection具有new List<>,而复杂类型具有new RefObj。但是ModelObject类型的简单virtual navigation property没有新的就可以了。

我可以在不了解每个约定类的内部结构的情况下坚持一个模式吗。或者还有其他我应该读的话题吗

您永远不需要在模型构造函数中实例化属性以使EF工作,但这会使其更加方便。

例如,如果您有一个类Order,它有Order Detail的子级,并且您想向数据库中添加一个新的Order。

不初始化OrderDetails

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

一种选择是调用订单。OrderDetails=新列表();在使用Add()之前,但之后您需要在想要使用Add(()的任何地方重复该代码。相反,您可以将该代码放入构造函数中,然后OrderDetails就可以用于所有新创建的订单了。

最新更新