.Net Core ORM選擇之路,哪個才適合你

fly-小文子發表於2019-01-02

因為老闆的一句話公司專案需要遷移到.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

https://github.com/sunkaixuan/SqlSugar

相關文章