EntityFrameworkCore是微軟官網提供的ORM框架,是輕量化、可擴展、開源和跨平臺的數據訪問技術框架,但是在.Net 開發圈的評論卻褒貶不一。很多人認為EFCore 執行的效能比較差,很多複雜的查詢場景很難實現,也有很多人認為,EFCore 開發簡單,在中小型項目中,能夠快速的實現業務 ...
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 框架越來越優秀。
您的支持,我的動力!