2013-03-21 56 views
0

我在我的C#项目中使用实体框架进行数据库连接。为什么没有其他构造函数,除了.edmx中的默认构造函数?

比方说,我有我的数据库,其中有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的列可能是造成这种情况的原因。

回答

1

实体框架试图尽可能通用。另外一些模型可能拥有10个以上的属性。如果你只需要分配它们的一小部分,那将是相当混乱的。另一个原因是在Entity Framework中构建模型会很麻烦。

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

1

EF为其生成的每个实体(类)生成静态构造函数CreateX方法。例如,在我的用户类别中的一个,我可以做到以下几点:

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

这确实大部分你想什么的迅速建立一个实体类的新实例条款。当然,这不会将新实例添加到集合或保存更改;您可能需要创建50,000个实例,并且每次节省都会浪费。

+0

但为什么它需要用户ID?我的用户的ID是int和自动增量。 – 2013-04-01 12:33:00

相关问题