Linq-to-entities:如何创建对象(new Xyz()vs CreateXyz())?

Jer*_*ink 3 entity-framework

在实体框架中添加新对象的最佳方法是什么?设计师添加了所有这些创建方法,但对我而言,在对象上调用new更有意义.生成的CreateCustomer方法例如可以像这样调用:

Customer c = context.CreateCustomer(System.Guid.NewGuid(), "Name"));
context.AddToCustomer(c);
Run Code Online (Sandbox Code Playgroud)

对我来说,这样做会更有意义:

Customer c = new Customer {
    Id = System.Guid.NewGuid(),
    Name = "Name"
};
context.AddToCustomer(c);
Run Code Online (Sandbox Code Playgroud)

后者更加明确,因为在构造中设置的属性被命名.我假设设计师故意添加创建方法.我为什么要用那些?

Cra*_*ntz 5

正如安德鲁所说(上调),使用常规构造函数是完全可以接受的.至于为什么存在"创建"方法,我认为目的是明确需要哪些属性.如果你使用这样的方法,你可以放心,你没有忘记设置任何属性,当你SaveChanges时会抛出异常.但是,实体框架的代码生成器并没有完全正确; 它还包括服务器生成的自动增量属性.这些在技术上是"必需的",但您不需要指定它们.