Entity Framework裡面 使用Code First 還是 Model First / Database First?
01-13
背景:
之前我們小組在一個項目中使用了Code First, 但是在使用Fluent API描述各種Class/Table之間的關係的時候花費了比較大的Cost。 今天要開始一個新的Project了,他們表示必須不要用Code First... 直接從建立Database開始,然後用EF導入Model/SPROC 什麼的。我個人覺得這樣需要寫許多多餘的ViewModel才能做到Model Validation, 比如說簡單的CRUD操作。 我也嘗試過直接使用MetadataType的屬性來額外綁定一些Validation的信息, 比如asp.net mvc 4 這樣。問題來了,大家在Model building, Model Update方面有沒有使用Code First比較好的經驗? 如果是Model First 如何做Model Validation?還有把大部分Logic寫道 SPROC是不是一個好的solution?
還是推薦code first,雖然EF Team沒明說,但是從各種文檔可以推斷出來,他們本身是推薦使用code first的。從我個人來說,我更習慣使用class代碼來定義和表達各個實體的關係。另外code first也更容易做版本管理。下一版本的EF7將code first放到了更重要的位置,model first可以說是名存實亡。總體來說,code first是趨勢。
堅決用CodeFirst,因為如果你表裡有數據,每次想通過modelFirst去更新表結構你就哭吧,血淚教訓。
我個人更喜歡code first 因為我覺得class定義的代碼和關係是很清晰易懂的
code first, model first, database first更確切的說應該是根據應用場景分的,比如如果在原有資料庫上開發,那就直接dabase first,如果是一個新項目,完全可以code first。但不管用哪種,其中的model都隸屬於domain model範疇,如果要在層間傳遞,要用到dto,所以更多的關注點應該放到dto和domain model的轉換上。
當我聽到code first這種方式時,我都驚訝了。。居然有這種神奇的方式,實在是……
一次見,首先不建資料庫模型,而是先寫class生成資料庫的。。
給題主推薦一個工具: Entity Framework Power Tools直接由資料庫生成codefirst代碼
code first 本來就可以從資料庫里直接生成code的,在VS2015里試下就知道了。
modelfirst有缺陷 更新表會導致數據丟失是眾人皆知的,而且modelfirst不能設計所有的資料庫關係,比如說在modelfirst中建立關係,不同的關係類型可能生成的關係資料庫一模一樣;還有從資料庫生成model,不同的資料庫關係也可能生成一樣的model;關係資料庫應是久經驗證的東西,所以唯一的可能是model edmx存在問題,這套設計系統貌似和sql關係圖相似,但是有有很多區別,搞了很多自己的概念。附註:我所說的一樣不是指看看edmx關係圖而已 而是指進行文件的二進位比較
必須用 Code First 只有這樣才能真正的拋棄資料庫的概念 完全實現面向對象開發添加一條數據直接調用Add方法,傳一個實體過去還有就是能更好的描述實體與實體之間的關係
毫無疑問 新項目用Code First
Code First 吧。之前試用了7的預覽版里,也只能使用Code First 了。
還是用code first 吧,model first生成的edmx文件好大。。。。
推薦閱讀:
※如何在C#中存儲大量數據而不引發OutOfMemoryException?
※為什麼聽說過 JVM 調優,卻沒聽說過 CLR 調優?
※WebApi和MVC有什麼區別?
※ASP.NET開源以後會有更多的網站選擇這個平台么?
※ADO.NET的SqlParameter(String,?Object)的構造函數第二個參數不能為0?
TAG:資料庫 | NET | C# | ASPNETMVC | EntityFramework |