[翻譯 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: 翻譯難免限於本人水平有不准確的地方,建議英文水平不錯的同學直接查看原版,有不足的地方歡迎指正

第一部分目錄導航

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

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

我會給你一個詳細的答案,正如你接下來看到的,我想更直觀的描述. 圖1.11展示了我對EF Core優缺點的看法: 優點在右邊,缺點在左邊. 每個塊的寬度是我認為該部分被改善的時間段: 越寬花費的時間越長. 這只是我的觀點,所以不要把它當做事實,我希望本書后續的內容可以幫助你思考EF Core對項目的影響

讓我們從優點開始,詳細的介紹圖1.11中的每一個塊

最新一代

我從LINQ to SQL切換到了EF 4,因為EF是未來發展的方向,而LINQ to SQL不會再投入更多的精力. 現在的EF Core也是一樣. 這是微軟正在努力的方向,它會得到更多的擴展和更長的支持. EF Core比EF6.x更輕量,速度更快. 我認為它的API改進的很好

如果你正在啟動一個新的項目,並且.NET Core和EF Core適用於你的項目,那么使用EF ore意味着你不會落后

跨平台與開源

我在開章開始的時候提到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菜單中可以看到數據庫的大小


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM