除了.edmx中的默认构造函数之外,为什么没有其他构造函数?

时间:2013-03-21 16:30:37

标签: c# entity-framework

我在我的C#项目中使用Entity Framework进行数据库连接。

假设我的数据库中有一个包含3列的表: 桌子:车 列:id,颜色,类型,numberOfDoors

以下是我为此表创建新记录的方法:

Car c = new Car();//default constructor
c.color = "blue";
c.type = "Opel";
c.numberOfDoors = 2;
myDatabase.tblCar.AddObject(c);
myDatabase.SaveChanges();

我在我的项目中的很多地方都这样做,所以前4行重复了很多。所以我在想,为什么Entity Framework没有带参数的构造函数?我认为也许db中可能为null的列可能就是这个原因。

2 个答案:

答案 0 :(得分:1)

实体框架试图尽可能地一般化。此外,某些型号可能还有10多种属性。如果你只需要分配它们的一小部分,这将是非常混乱的。另一个原因是在Entity Framework中构建模型会很麻烦。

使用partial关键字生成类,您应该可以自己添加。

答案 1 :(得分:1)

EF为它生成的每个Entity(类)生成静态构造函数CreateX方法。例如,在我的一个User类中,我可以执行以下操作:

User user = User.CreateUser(userID, password, email, userTypeId);

在快速设置实体类的新实例方面,这可以满足您的大部分要求。当然,这不会将新实例添加到集合或保存更改;你可能想创建50,000个实例,每次保存都会浪费。