2013-03-21 63 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

相關問題