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

本文关键字:构造函数 其他 默认 edmx 为什么 | 更新日期: 2023-09-27 18:05:03

我在c#项目中使用实体框架来连接数据库。

假设我在我的数据库中有一个表,它有3列:表:汽车columns: id, color, type, numberOfDoors

下面是我为这个表创建新记录的方法:

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

我在项目的很多地方都这样做,所以前4行重复很多。所以我在想,为什么实体框架没有一个带参数的构造函数?我想也许列可以在db中为空可以是这个原因。

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

实体框架试图尽可能通用。另外,有些模型可能有10多个属性。如果您只需要分配其中的一小部分,那将是相当混乱的。另一个原因是在实体框架内部构造模型会很混乱。

这些类是用partial关键字生成的,你应该可以自己添加。

EF为它生成的每个实体(类)生成静态构造函数CreateX方法。例如,在我的一个User类上,我可以这样做:

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

在快速设置实体类的新实例方面,这完成了大多数您想要的功能。当然,这不会将新实例添加到集合中或保存更改;您可能希望创建50,000个实例,并且每次都保存将是浪费。