什麼是Entity Framework?Entity Framework簡稱EF(固然,搜索引擎不認的),它是一個 ORM框架,就是將 Model 和數據庫表關聯的一種框架。主要做用是,簡化程序員對數據庫操做的過程。它會自動根據你的配置(或配置文檔、或註解)生成對應的表,會根據調用的方法不一樣自動拼接SQL語句(暫時這麼認爲,由於Hibernate是這樣的,因此同理),或者乾脆執行SQL語句。固然,既然簡化了開發過程,確定要犧牲一些東西的。由於是自動生成的,首先靈活性會降低不少,故而對於數據庫設計的要求會比較高;其次,性能上也會犧牲一些。 程序員
對於EF此類框架的評價就是,不要嫌棄它,由於它自己就是爲了快速開發而設計的。若是用不到,或者相信本身的能力,額,能夠考慮一下本身搞起。 數據庫
EF開發分爲Code First(代碼優先)、Model First(設計優先)兩個方向。固然,若是你要說還有 Database First的話,那就不太對了。由於Database First只能算是Model First的一種特殊狀況。至於爲何這麼說,一方面是由於官方是這麼分的,另外一方面等我大體分析一下,你就明白了。 框架
Code First,又叫代碼優先(應該不止我一我的這麼叫的)。顧名思義,以代碼爲所有,不使用xml等配置文件,在代碼中進行相關配置或者乾脆不配置,使用默認的實現方式。 數據庫設計
提及這個來,我最先接觸「約定優先」這個概念的時候是在 Asp.net MVC中看到的。「約定優先」這個概念的意思就是框架引擎不依照配置文件/不依照註解,僅僅經過繼承關係、標識符、參數列表等信息確認方法或類。也就是說,自定義的類和方法須要遵照必定的命名規範,好比說必須以某串字符結束或開始。這樣作就會有一個好處,不熟悉註解或配置的人也能很容易上手,只要仿照官方給定的模板就能開發。固然了,利於新手就不利於體現逼格了,最大的缺點就是若是手滑打錯了,那就對不起了。廢話這麼多意思就是,EF的模型類也參照了這個約定。若是沒有特別指定,引擎會根據約定優先進行操做。 性能
固然,由於「約定優先」靈活性太差,並且不能對某些列進行自定義,因此,EF又開放了兩種方式:1) 註釋;2) Fluent API。 搜索引擎
經過「[ ]」標註該屬性或類的特性。關於這個,我不少時候會叫成註解,一方面叫註釋的話會容易叫混(不要問我爲何),另外一方面這種技術在Java Spring中稱爲註解。不得不感慨一句,中文博大精深啊。 具體實現會在後續中介紹,這裏不說的緣由是我還沒細看,我也瞭解不是不少,好嘛。 spa
這個怎麼翻譯啊?Fluent這裏應該是(a.)流利的意思。這個就是,在代碼本身定義 類-表, 屬性-表字段 ,關係等等。應該屬於工廠模式吧。 .net
Model First,又稱設計優先。提及來,這個應該是中英文最對不上的翻譯了。爲何要叫設計優先呢,由於這種方式採用的是配置優先,依據配置文件解析模型層。由於這個配置文件至關複雜,曾經花了一下午啥都沒看懂。對此,VS有一個圖形化設計器,經過「拖拖拖」就能搞定模型層、配置文件、數據庫表 這三者的建立和對應,就像是一我的經過畫圖設計出了一個數據庫,因此就叫設計優先。 翻譯
Database First說的就是Model First中根據已有數據庫VS自動生成模型類或開發人員自定義模型類這種狀況。 設計
注:以上內容只是個人淺顯之見,僅供參考。並且可能會隨着我對EF框架的熟悉會進行修改。提及EF框架來,這是一個很棒的框架,開發成本很低,並且靈活性也不差。