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