EntityFramework6 快速入門教程
不得不說EF在國內實在是太小眾,相關的技術文章真實屈指可數,而且很多文章都很舊了,里面使用的版本跟如今的EF6差別還是比較大。我剛開始弄這個的時候真是繞了不少彎路。
學習EF還是需要一些條件,使用EF並不意味着你就可以完全不跟數據庫打交道了,要學好EF,數據庫中的什么主鍵、外鍵、索引、SQL等你還是要懂,另外EF中將大量使用LINQ來進行數據查詢,數據模型中還將涉及到特性與泛型,所以對於C#的基礎要求還比較高。
在我看來EF並不適合初學者使用,雖然微軟最初設計EF的初衷就是讓程序員擺脫SQL,即使不懂SQL也能完成對數據庫的操作,不過從最終的效果來看,EF不僅沒有使得問題變得簡單反倒更復雜了。為了不寫SQL,微軟創建了一種和SQL長得非常像的LINQ,為了能讓EF創建數據表,微軟又將數據庫中的各種約束、數據類型封裝成了一個個特性。所以如果沒有良好的數據庫基礎你是根本學不了的。
由於EF是通過代碼來生成SQL供數據庫執行,所以不管怎么優化,相對於原生SQL,性能肯定都比較差。EF在中小型的項目中可能還行,在大型項目,特別是高並發的項目中使用EF,我估計用不了多久數據庫就會崩潰。
以上說了EF的那么多的不是,是不是EF一點用處都沒有了呢?EF最大的優點就是快,這個快是指開發迅速,只要你熟悉了EF,只需要寫很少的代碼,就能完成以前需要寫很多行代碼才能完成的數據庫交互。所以使用EF來應付客戶就再適合不過了,如果你要我在我自己的項目中使用,我是絕對不會用這東西的。
PS:如果想不犧牲性能又要保持EF開發的快捷,可以嘗試一下如今很火的NOSQL數據庫,例如Mongodb。我覺得如今NOSQL數據庫的出現,使得EF的這類型的框架,真的沒有更多存在的價值了。
書籍推薦
如今關於EF6的書真是少,只有一本叫Entity Framework 6 Recipes。不過沒有中文版,如果想系統學習的話建議看看這位仁兄的文章《Entity Framework 6 Recipes》中文翻譯系列。