[翻譯 EF Core in Action 1.10] 應該在項目中使用EF Core嗎?

Entity Framework Core in Action

Entityframework Core in action是 Jon P smith 所著的關於Entityframework Core 書籍。原版地址. 是除了官方文檔外另外一個學習EF Core的不錯途徑, 書中由淺入深的講解的EF Core的相關知識。由於沒有中文版,因此本人對其進行翻譯。 預計每兩天一篇更新 PS: 翻譯不免限於本人水平有不許確的地方,建議英文水平不錯的同窗直接查看原版,有不足的地方歡迎指正html

第一部分目錄導航

應該在項目中使用EF Core嗎?

在簡單介紹了EF Core以及它的工做方式以後,接下來的問題是你是否應該在項目中開始使用EF Core. 對於想要使用EF Core的人來講,關鍵的問題是EF Core是否優與目前項目中使用的數據庫訪問庫,簡單的說就是它是否值得咱們使用. 學習和使用新的類庫都是有成本的,特別是像EF Core這樣龐大複雜的庫linux

我會給你一個詳細的答案,正如你接下來看到的,我想更直觀的描述. 圖1.11展現了我對EF Core優缺點的見解: 優勢在右邊,缺點在左邊. 每一個塊的寬度是我認爲該部分被改善的時間段: 越寬花費的時間越長. 這只是個人觀點,因此不要把它當作事實,我但願本書後續的內容能夠幫助你思考EF Core對項目的影響git

讓咱們從優勢開始,詳細的介紹圖1.11中的每個塊github

最新一代

我從LINQ to SQL切換到了EF 4,由於EF是將來發展的方向,而LINQ to SQL不會再投入更多的精力. 如今的EF Core也是同樣. 這是微軟正在努力的方向,它會獲得更多的擴展和更長的支持. EF Core比EF6.x更輕量,速度更快. 我認爲它的API改進的很好數據庫

若是你正在啓動一個新的項目,而且.NET Core和EF Core適用於你的項目,那麼使用EF ore意味着你不會落後windows

跨平臺與開源

我在開章開始的時候提到EF Core支持跨平臺,你能夠在windows,linux和Apple上開發和運行EF Core應用程序. EF Core是開源的,你能夠直接查看源碼和問題與缺點列表 -- 參見 https://github.com/aspnet/EntityFramework/issues框架

快速開發

在典型的數據驅動應用程序中,我編寫了大量的數據庫訪問代碼,有一些很複雜. 我發現EF6.x和如今的EF Core可讓我很簡便快速的編寫數據訪問代碼,而且易於理解與重構. 這是我使用EF的主要緣由之一工具

EF Core對開發人員很友好,即便我沒有編寫最良好的代碼也每每會建立有效的查詢. 大部分格式正確的LINQ查詢均可以正常工做,儘管它們可能沒法被轉換爲性能最佳的SQL,不過一個正確有效的查詢代碼是一個很好的開始(咱們能夠再優化). 第12章介紹了性能調優的領域性能

良好的文檔與支持

EF Core有完善的文檔 (https://docs.microsoft.com/zh-cn/ef/core/index), 一樣還有本書將文檔與更深刻的介紹和示例以及模式結合在一塊兒,使你成爲一名優秀的開發人員. 由於有不少EF 6.x的開發人員遷移到EF Core,互聯網上有不少EF Core的博客,Stack Overflow可能已經有了你問題的解決方案學習

支持的另外一部分是開發工具. 微軟建立了免費Visual Studio Code跨平臺開發環境. 微軟還將Visual Studio免費提供了我的和小型企業

經過Nuget包獲取安裝

儘管.NET Core 1出現了一些早期的困難,但2017年8月.Net Standard 2.0引入的.Net Framework兼容模式已經解決了大部分問題, 這就是EF Core 2.0構建的緣由. .Net Standard 2.0容許早期(大多數).Net版本使用現有的Nuget庫. 若是Nuget包使用了不兼容的功能(例如System.Reflection),則會出現問題. .Net Standard 2.0還支持更大範圍的系統方法,這使將包轉換爲.Net Standard 2.0變的更容易

若是你的.Net框架版本是4.6.1或更多,那麼你能夠直接使用EF Core

全功能的ORM

Entity Framework一般是O/RM的功能豐富的實現, EF Core將繼續這一趨勢. 它容許編寫複雜的數據訪問代碼,涵蓋了你想使用的大部分數據庫的功能. 我使用過ADP.NET,LINQ to SQL, EF 4到6以及如今的EF Core, 我相信這已是一個很棒的O/RM了

可是在編寫本書時, EF Core(2.0)仍然有一些功能還沒有添加, 這就是圖1.11中的塊如此寬的緣由. 若是你使用過EF 6.x,你會注意到EF6.x的一些功能EF Core中尚未,但隨着時間的推移,這些功能都會添加. 我建議你EF Core docs網站的功能比較頁 http://mng.bz/ek4D, 在這裏能夠了解到最新的進展

穩定的類庫

當我開始寫這個書時,EF Core還不穩定. 它有不少的缺陷和缺乏的功能. 我發現1.0.0版本中使用DateTime的year存在錯誤, 還有1.1.0中修復的其餘LINQ翻譯的問題

當你在讀到這篇文章時, EF Core已經修復了不少問題,可是仍在變化. 儘管速度要慢的多. 若是你想要穩定,能夠選擇EF6.x或其餘數據庫訪問技術

保持高性能

對於數據庫性能問題,我不會說EF Core開箱即用,它擁有魔法能夠生成漂亮的SQL和快速數據攝取帶來極高的數據庫訪問性能. -.-這是不存在的!這是簡便的代價: EF Core內部全部的"魔法"都不如手工編寫的SQL好,可是你可能會驚訝它的魔法仍是有點料的

幸運的是咱們對此作一些措施.在個人項目中,我發現只有5%到10%的查詢是須要手動調優的關鍵查詢. 第12和13章以及第14章的一部分專門討論性能調優. 咱們有不少手段能夠提升EF Core的數據庫訪問性能

若是你擔憂EF Core的性能,我建議你閱讀13章,這一章中你會學習如何逐步提升應用程序的性能. 你將看到EF Core能夠在不多的額外工做下運行良好. 我有兩個演示站點 http://efcoreinaction.comhttp://cqrsravendb.efcoreinaction.com ,在about菜單中能夠看到數據庫的大小

相關文章
相關標籤/搜索