由於老闆的一句話公司項目須要遷移到.Net Core ,可是之前同事用的ORM不支持.Net Core 開發過程也遇到了各類坑,插入條數多了也特別的慢,致使系統體驗比較差好多都改寫Sql實現。git
因此我打算找一款github
性能比較好 數據庫
功能比較完善併發
方便之後能夠切換數據庫(通過我對老闆的瞭解這個功能很是重要)app
而且要有必定用戶基礎的ORM 性能
參賽ORM測試
可以參賽的ORM必需要有如下個條件spa
第1、功能方面要比較完善hibernate
第2、Github須要有必定人氣而且最近有更新插件
第3、支持多種數據庫少寫Sql,方便之後
篩選結果:
一、EF Core
二、Dapper+擴展
三、SqlSugar Core
四、Nhibernate Core
五、PetaPoco
第一輪淘汰賽 咱們比 人氣&功能
通過對這幾個ORM的初步瞭解,對功能方面和人氣方面進行了初步評分
一、EF Core 人氣10,功能10
二、Dapper+擴展 人氣10,功能9
三、SqlSugar Core 人氣7,功能10
四、Nhibernate Core 人氣7,功能10
五、PetaPoco 人氣6,功能6
通過第一輪帥選,我淘淘汰了PetaPoco ORM
最重要的是這個ORM定位比較尷尬 ,功能通常而且擴展插件也比較稀少。現有功能以拼Sql爲主知足不了我之後切換數據庫的需求,第一輪淘態。
第一輪得分排名
一、EF Core 勝出
二、Dapper+擴展 勝出
三、SqlSugar Core ,Nhibernate Core 勝出
四、PetaPoco 淘汰
第二輪淘汰賽 咱們比易用性
寫太牛逼的功能並非咱們所考慮的,須要上手快好用,因而我針對項目中幾個需求點進行了上手測試,並給出了評分
一、EF Core 10 輕鬆知足
二、Dapper+擴展 8 須要找插件比較費時間
三、SqlSugar Core 10 輕鬆知足
四、Nhibernate Core 1 徹底不會用
第二輪得分排名
一、EF Core,SqlSugar Core 勝出
二、Dapper+擴展 勝出
三、Nhibernate Core 淘汰
可以經過精心挑選而且進入前3名,相信這3個ORM都有他們獨自的魅力
第三輪淘汰賽 咱們比性能
通過對 批量插入、單條插入、批量更新、單條更新、條件查詢、多選刪除等幾種經常使用場景的併發測試
我意外的發現SqlSugar性能比Dapper更加的優秀,EF Core墊底
第三輪得分排名
一、SqlSugar Core 勝出
二、Dapper+擴展 勝出
三、EF Core 淘汰
經過上面各類環節咱們能夠發現,我都會淘汰每場比賽表現最差者,由於我想找一個比較平衡的ORM用於項目,不想有短腿。
決賽 咱們比你們的建議
目前Dapper+擴展和SqlSugar Core 這2個ORM是最適合咱們的團隊的,同事之間也各有說詞,暫且平手吧。明天咱們公司會在進行討論。寫個博文讓你們給給建議,進行最終定奪。
下面是這2款ORM地址:
Dapper
https://github.com/StackExchange/Dapper
https://github.com/tmsmith/Dapper-Extensions
SqlSugar