企業應用架構研究系列十三:整合EFCore&Dapper 通用ORM框架EFDapper


  EntityFrameworkCore是微軟官網提供的ORM框架,是輕量化、可擴展、開源和跨平台的數據訪問技術框架,但是在.Net 開發圈的評論卻褒貶不一。很多人認為EFCore 執行的效能比較差,很多復雜的查詢場景很難實現,也有很多人認為,EFCore 開發簡單,在中小型項目中,能夠快速的實現業務邏輯。

  

    我個人認為,EFCore一直在不斷的升級,社區反饋的問題也在逐一的去努力解決,EFCore應該是一個可以信任,可以在項目中放心使用的框架。特別是EFCore7.0出來后,提供的對JSON的支持,讓我更加確信EFCore是一個優秀的ORM框架。我對其的一些優秀的功能進行總結:(1)首先,EFCore 的對象模型管理還是非常嚴謹,基本上將對象的關系和數據庫的表的關系管理的非常到位,保證數據的純凈,並且可以進行連帶的統一移除,這點是非常不錯的;(2)其次,EFCore 提供了數據的變更管理,通過Migration工具將對象的變更和數據庫的變更高效的進行了自動化的管理,特別是在產品軟件開發過程中,提供了一鍵式部署提供了非常方便的支持。(3)EFCore 的對Linq 的支持力度是非常大的,能夠快速的進行應用程序的開發。(4)EFCore 的后續版本對異步操作和性能提升方面,也做了很大的升級,(5)特別是EFCore7 版本支持了JSON功能,這個是對一些靈活的動態屬性或者子表可以簡化了數據庫的變更,更好的適應非結構化數據存儲。(6)種子數據的管理,方便產品型軟件在程序首次啟動時候,初始化一些原始的配置數據。…… 其實還有很多優秀的功能,我本次也不在熬述。

  但EFCore 目前在一些查詢和特殊的SQL語句的執行過程中,支持的不是特別好,性能也不是特別優秀。這個時候,我們需要引入另外一個ORM插件,Dapper,號稱性能之王的ORM框架,在性能方面的確是非常非常優秀,功能也是很強大,支持的生態圈也是很豐富的。而且在.Net 開發圈內是非常受歡迎的。在這里,也不在介紹Dapper的優秀功能,可以參考官網:https://dapper-tutorial.net ,官網說明的非常清楚而且很詳細。

  當在進行全新軟件架構選型數據處理層插件的時候,很讓我頭疼,是選擇EFCore 還是Dapper 呢?經過一番折騰,我覺得兩個插件其實是可以互相彌補彼此不足,發揚插件彼此的優秀能力,將兩個插件高效融合在一起。基於這個思路,我開發了一個新的結合體數據訪問層框架EFDapper,本着最簡設計思路,在DbContext上面進行功能綁定,如下圖,我們就可以將Dapper的 高效的查詢功能和EFCore 進行了高效融合了。

  

   EFDapper 的使用是非常簡單,就是EFCore 的功能和Dapper 的功能的合體,通過EFCore 的DbContext 的上下文,獲取數據庫連接信息,然后就可以擴展到Dapper 功能框架了,完美的結合了兩個數據訪問層框架。

   

  目前EFDapper 框架還沒有開發成熟,后續計划在兩框架之間,可以開發一些優秀功能,也希望EFCore 和Dapper 框架越來越優秀。

 


免責聲明!

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



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