NET主流的幾款重量級 ORM框架

中年農碼工 發佈 2022-09-28T06:13:03.478049+00:00

市場上輕量級ORM有很多,比如Dapper、Chloe 本篇文章就介紹一下 功能比較多並且全的ORM1、Entity Framework(重量級)2、SqlSugar(重量級)3、NHibernate(重量級)4、PetaPoco (介於EF和Dapper之間)對比:操作的難易程

市場上輕量級ORM有很多,比如Dapper、Chloe 本篇文章就介紹一下 功能比較多並且全的ORM

1、Entity Framework(重量級)

2、SQLSugar(重量級)

3、NHibernate(重量級)

4、PetaPoco (介於EF和Dapper之間)

對比:操作的難易程度、執行效率、跨資料庫

應用程式的組成必須有資料庫
開發人員的職責:編寫業務和功能性代碼
如果讓開發人員去學習資料庫增加了開發成本,將資料庫操作封裝為代碼級別的API讓程式設計師調用,實現了職責分離

(1)Entity Framework

1.一般EntityFrameworkCore(ORM映射工具)安裝在你的數據項目工程中,這裡我通過nuget安裝的sqlserver的包。對應的數據和安裝對應的包就行。報名如下:
Microsoft.EntityFrameworkCore.sqlServer

2.然後我們建立好對應的數據Model

3.Model建立完成後,我們建立資料庫上下文文件如下

EFCORE是微軟 官方ORM ,也是每個.NET用戶必學的框架,工作中占比最高的ORM

(2)SqlSugar

是一款使用比較簡單的重量級ORM ,有完整的中文文檔上手快,也是重多國產ORM代表之一,同類型的還有幾款這裡不作介紹功能基本上差不多

功能全面 有完善的表達式 、支持導航查詢、導航插入、導航刪除、字典插入、BulkCopy、資料庫管理、二級緩存、AOP、CodeFirst、DbFirst、WebFirst、導入驗證、分批處理、樹型查詢、倉儲、低代碼、UOW等、事務和鎖、嵌套查詢、並集查詢和ado操作等

Nuget 安裝 .NET Core就安裝 SqlSugarCore

導航查詢

var list=db.Queryable<Test>()

.Includes(te => te.Provinces, pro=>pro.Citys ,cit=>cit.Street) //多層級

.Includes(te=> te.ClassInfo)// 一級查詢

.ToList();

聯表查詢

var query5 = db.Queryable<Order>()

.LeftJoin<Custom> ((o, cus ) => o.CustomId == cus.Id)//多個條件用&&

.LeftJoin<OrderDetail> ((o, cus, oritem) => o.Id == oritem.OrderId)

.Where(o => o.Id == 1)

.Select(o =>o)

.ToList();



3、PetaPoco(增刪改不需要自己寫sql語句)

Nuget下載PetaPoco,安裝時會自動生成模板 (介於EF和Dapper之間)
其中在DataBase.tt模板文件中修改配置ConnectionStringName為連接字符串的name,其他配置修改可選

using(var context = new DbContext())

{

var list = context.Query<Article>("select * from article");

foreach(var item in list)

{

console.WriteLine(item.Title);

}

}

//PetaPoco插入

var article = new Article{ Title="測試標題",Content="測試內容" };

var count = article.Insert();



4、NHibernate

比較貼近Java程式設計師的ORM,學習成本比較高

1.完全的ORM框架
NHibernate對資料庫結構提供了較為完整的封裝,它將資料庫模式映射為較完全的對象模型,支持封裝,繼續機制,功能較強大,比一般的ORM靈活性高。
開發人員可以完全按照對象模型操縱資料庫。
2.代碼自動生成,減少代碼和sql的開發量,使開發人員擺脫開sql,ADO.NET和事務,緩存等底層。
NHibernate的O/R Mapping實現了PO 和資料庫表之間的映射,以及SQL 的自動生成和執行。程式設計師往往只需定義好了PO 到資料庫表的映射關係,即可通過NHibernate提供的方法完成持久層操作。程式設計師甚至不需要對SQL 的熟練把握, NHibernate 會根據制定的存儲邏輯,自動生成對應的SQL 並調用ADO.NET接口加以執行。NHibernate有工具可以直接根據資料庫模式生成po類,或者通過在代碼中添加Attribute屬性自動生成配置文件。


3.較好的文檔支持。
NHibernate的代碼可讀性和文檔都比較好

關鍵字: