網(wǎng)站首頁 編程語言 正文
市場上輕量級ORM有很多,比如Dapper、Chloe 本篇文章就介紹一下 功能比較多并且全的ORM
1、Entity Framework(重量級)
2、SqlSugar(重量級)
3、NHibernate(重量級)
4、PetaPoco (介于EF和Dapper之間)
對比:操作的難易程度、執(zhí)行效率、跨數(shù)據(jù)庫
應(yīng)用程序的組成必須有數(shù)據(jù)庫
開發(fā)人員的職責(zé):編寫業(yè)務(wù)和功能性代碼
如果讓開發(fā)人員去學(xué)習(xí)數(shù)據(jù)庫增加了開發(fā)成本,將數(shù)據(jù)庫操作封裝為代碼級別的API讓程序員調(diào)用,實(shí)現(xiàn)了職責(zé)分離
1、Entity Framework
1.一般EntityFrameworkCore(ORM映射工具)安裝在你的數(shù)據(jù)項(xiàng)目工程中,這里我通過nuget安裝的sqlserver的包。對應(yīng)的數(shù)據(jù)和安裝對應(yīng)的包就行。包名如下:
Microsoft.EntityFrameworkCore.SqlServer
2.然后我們建立好對應(yīng)的數(shù)據(jù)Model
3.Model建立完成后,我們建立數(shù)據(jù)庫上下文文件如下
EFCORE是微軟 官方ORM ,也是每個.NET用戶必學(xué)的框架,工作中占比最高的ORM
2、SqlSugar
是一款使用比較簡單的重量級ORM ,有完整的中文文檔上手快,也是重多國產(chǎn)ORM代表之一,同類型的還有幾款這里不作介紹功能基本上差不多
功能全面 有完善的表達(dá)式 、支持導(dǎo)航查詢、導(dǎo)航插入、導(dǎo)航刪除、字典插入、BulkCopy、數(shù)據(jù)庫管理、二級緩存、AOP、CodeFirst、DbFirst、WebFirst、導(dǎo)入驗(yàn)證、分批處理、樹型查詢、倉儲、低代碼、UOW等、事務(wù)和鎖、嵌套查詢、并集查詢和ADO操作等
Nuget 安裝 .NET Core就安裝 SqlSugarCore
導(dǎo)航查詢
var list=db.Queryable<Test>()
.Includes(te => te.Provinces, pro=>pro.Citys ,cit=>cit.Street) //多層級
.Includes(te=> te.ClassInfo)// 一級查詢
.ToList();
聯(lián)表查詢
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="測試標(biāo)題",Content="測試內(nèi)容" };
var count = article.Insert();
4、NHibernate
比較貼近Java程序員的ORM,學(xué)習(xí)成本比較高
1.完全的ORM框架
NHibernate對數(shù)據(jù)庫結(jié)構(gòu)提供了較為完整的封裝,它將數(shù)據(jù)庫模式映射為較完全的對象模型,支持封裝,繼續(xù)機(jī)制,功能較強(qiáng)大,比一般的ORM靈活性高。
開發(fā)人員可以完全按照對象模型操縱數(shù)據(jù)庫。
2.代碼自動生成,減少代碼和sql的開發(fā)量,使開發(fā)人員擺脫開sql,ado.net和事務(wù),緩存等底層。
NHibernate的O/R Mapping實(shí)現(xiàn)了PO 和數(shù)據(jù)庫表之間的映射,以及SQL 的自動生成和執(zhí)行。程序員往往只需定義好了PO 到數(shù)據(jù)庫表的映射關(guān)系,即可通過NHibernate提供的方法完成持久層操作。程序員甚至不需要對SQL 的熟練把握, NHibernate 會根據(jù)制定的存儲邏輯,自動生成對應(yīng)的SQL 并調(diào)用ADO.NET接口加以執(zhí)行。NHibernate有工具可以直接根據(jù)數(shù)據(jù)庫模式生成po類,或者通過在代碼中添加Attribute屬性自動生成配置文件。
這些都減少了開發(fā)工作量。
3.較好的文檔支持。
NHibernate的代碼可讀性和文檔都比較好。
原文鏈接:https://www.cnblogs.com/sunkaixuan/p/16467703.html
相關(guān)推薦
- 2024-03-18 JedisDataException: READONLY You can‘t write again
- 2022-05-02 Numpy中創(chuàng)建數(shù)組的9種方式小結(jié)_python
- 2022-07-22 關(guān)于不定方程解的個數(shù)的問題
- 2022-07-09 基于fluttertoast實(shí)現(xiàn)封裝彈框提示工具類_Android
- 2022-11-09 Android性能優(yōu)化之plt?hook與native線程監(jiān)控詳解_Android
- 2023-07-13 react父子組件,任意組件傳值
- 2022-03-20 關(guān)于數(shù)據(jù)庫系統(tǒng)的概述_數(shù)據(jù)庫其它
- 2022-04-05 ORA-01779: 無法修改與非鍵值保存表對應(yīng)的列
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支