Entity framework EF代码优先-模型,何时在构造函数中实例化属性?

Entity framework EF代码优先-模型,何时在构造函数中实例化属性?,entity-framework,ef-code-first,Entity Framework,Ef Code First,我想知道,对于何时需要实例化属性,是否有一个很好的解释 在模型类构造函数中以及不需要时 微软EF网站上的Docu很好,涵盖了很多相关主题 关系和导航属性- 配置与API的关系 实体框架类库 我还读了Julia Lerman的《编程实体框架-代码优先》一书 我想更好地理解何时需要在模型构造函数中实例化属性。 我在MS文档和书中看到了示例,在模型构造函数中有或没有新的属性。 很可能有一个很好的理由说明为什么一些解决方案使用带有新对象的构造函数,而其他解决方案不使用构造函数。 似乎虚拟ICollect

我想知道,对于何时需要实例化属性,是否有一个很好的解释 在模型类构造函数中以及不需要时

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

关系和导航属性-
配置与API的关系

实体框架类库

我还读了Julia Lerman的《编程实体框架-代码优先》一书

我想更好地理解何时需要在模型构造函数中实例化属性。
我在MS文档和书中看到了示例,在模型构造函数中有或没有新的属性。 很可能有一个很好的理由说明为什么一些解决方案使用带有新对象的构造函数,而其他解决方案不使用构造函数。
似乎
虚拟ICollection
具有
新列表
,而复杂类型具有
新的RefObj
。 但是ModelObject类型的简单
虚拟导航属性
没有新属性也可以

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

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

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

不初始化OrderDetails

var order = new Order();
order.OrderDetails.Add(new OrderDetail()); // this would error because OrderDetails is null
一个选项是调用order.OrderDetails=new List(); 在使用Add()之前,您需要在希望使用Add()的任何地方重复该代码。相反,您可以将该代码放入构造函数中,然后OrderDetails就可以用于所有新创建的订单

您不需要在models构造函数中实例化属性,EF就可以正常工作,但这样做更方便

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

不初始化OrderDetails

var order = new Order();
order.OrderDetails.Add(new OrderDetail()); // this would error because OrderDetails is null
一个选项是调用order.OrderDetails=new List();
在使用Add()之前,您需要在希望使用Add()的任何地方重复该代码。相反,您可以将该代码放入构造函数中,然后OrderDetails就可以用于所有新创建的订单

因此,这是一个样式/设计问题,而不是EF填充模型的内部要求。感谢没有进一步反馈或评论的反馈,我已将其标记为正确答案,因此这是一个风格/设计问题,而不是EF填充模型的内部要求。谢谢你的反馈,因为没有进一步的反馈或评论,我已将此标记为正确答案