詳解.NET主流的幾款重量級(jí)?ORM框架
市場(chǎng)上輕量級(jí)ORM有很多,比如Dapper、Chloe 本篇文章就介紹一下 功能比較多并且全的ORM
1、Entity Framework(重量級(jí))
2、SqlSugar(重量級(jí))
3、NHibernate(重量級(jí))
4、PetaPoco (介于EF和Dapper之間)
對(duì)比:操作的難易程度、執(zhí)行效率、跨數(shù)據(jù)庫(kù)
應(yīng)用程序的組成必須有數(shù)據(jù)庫(kù)
開(kāi)發(fā)人員的職責(zé):編寫(xiě)業(yè)務(wù)和功能性代碼
如果讓開(kāi)發(fā)人員去學(xué)習(xí)數(shù)據(jù)庫(kù)增加了開(kāi)發(fā)成本,將數(shù)據(jù)庫(kù)操作封裝為代碼級(jí)別的API讓程序員調(diào)用,實(shí)現(xiàn)了職責(zé)分離
1、Entity Framework
1.一般EntityFrameworkCore(ORM映射工具)安裝在你的數(shù)據(jù)項(xiàng)目工程中,這里我通過(guò)nuget安裝的sqlserver的包。對(duì)應(yīng)的數(shù)據(jù)和安裝對(duì)應(yīng)的包就行。包名如下:
Microsoft.EntityFrameworkCore.SqlServer
2.然后我們建立好對(duì)應(yīng)的數(shù)據(jù)Model
3.Model建立完成后,我們建立數(shù)據(jù)庫(kù)上下文文件如下
EFCORE是微軟 官方ORM ,也是每個(gè).NET用戶(hù)必學(xué)的框架,工作中占比最高的ORM
2、SqlSugar
是一款使用比較簡(jiǎn)單的重量級(jí)ORM ,有完整的中文文檔上手快,也是重多國(guó)產(chǎn)ORM代表之一,同類(lèi)型的還有幾款這里不作介紹功能基本上差不多
功能全面 有完善的表達(dá)式 、支持導(dǎo)航查詢(xún)、導(dǎo)航插入、導(dǎo)航刪除、字典插入、BulkCopy、數(shù)據(jù)庫(kù)管理、二級(jí)緩存、AOP、CodeFirst、DbFirst、WebFirst、導(dǎo)入驗(yàn)證、分批處理、樹(shù)型查詢(xún)、倉(cāng)儲(chǔ)、低代碼、UOW等、事務(wù)和鎖、嵌套查詢(xún)、并集查詢(xún)和ADO操作等
Nuget 安裝 .NET Core就安裝 SqlSugarCore
導(dǎo)航查詢(xún)
var list=db.Queryable<Test>() .Includes(te => te.Provinces, pro=>pro.Citys ,cit=>cit.Street) //多層級(jí) .Includes(te=> te.ClassInfo)// 一級(jí)查詢(xún) .ToList();
聯(lián)表查詢(xún)
var query5 = db.Queryable<Order>() .LeftJoin<Custom> ((o, cus ) => o.CustomId == cus.Id)//多個(gè)條件用&& .LeftJoin<OrderDetail> ((o, cus, oritem) => o.Id == oritem.OrderId) .Where(o => o.Id == 1) .Select(o =>o) .ToList();
3、PetaPoco(增刪改不需要自己寫(xiě)sql語(yǔ)句)
Nuget下載PetaPoco,安裝時(shí)會(huì)自動(dòng)生成模板(介于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="測(cè)試標(biāo)題",Content="測(cè)試內(nèi)容" }; var count = article.Insert();
4、NHibernate
比較貼近Java程序員的ORM,學(xué)習(xí)成本比較高
1.完全的ORM框架
NHibernate對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)提供了較為完整的封裝,它將數(shù)據(jù)庫(kù)模式映射為較完全的對(duì)象模型,支持封裝,繼續(xù)機(jī)制,功能較強(qiáng)大,比一般的ORM靈活性高。
開(kāi)發(fā)人員可以完全按照對(duì)象模型操縱數(shù)據(jù)庫(kù)。
2.代碼自動(dòng)生成,減少代碼和sql的開(kāi)發(fā)量,使開(kāi)發(fā)人員擺脫開(kāi)sql,ado.net和事務(wù),緩存等底層。
NHibernate的O/R Mapping實(shí)現(xiàn)了PO 和數(shù)據(jù)庫(kù)表之間的映射,以及SQL 的自動(dòng)生成和執(zhí)行。程序員往往只需定義好了PO 到數(shù)據(jù)庫(kù)表的映射關(guān)系,即可通過(guò)NHibernate提供的方法完成持久層操作。程序員甚至不需要對(duì)SQL 的熟練把握, NHibernate 會(huì)根據(jù)制定的存儲(chǔ)邏輯,自動(dòng)生成對(duì)應(yīng)的SQL 并調(diào)用ADO.NET接口加以執(zhí)行。NHibernate有工具可以直接根據(jù)數(shù)據(jù)庫(kù)模式生成po類(lèi),或者通過(guò)在代碼中添加Attribute屬性自動(dòng)生成配置文件。
這些都減少了開(kāi)發(fā)工作量。
3.較好的文檔支持。
NHibernate的代碼可讀性和文檔都比較好。
到此這篇關(guān)于詳解.NET主流的幾款重量級(jí) ORM框架的文章就介紹到這了,更多相關(guān).NET ORM框架內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET利用MD.DLL轉(zhuǎn)EXCEL具體實(shí)現(xiàn)
首先引入MD.dll 文件(附有下載地址)然后建立無(wú)CS文件的DownExcel.aspx 文件,接下來(lái)是調(diào)用方法,感興趣的朋友可以參考下哈2013-05-05數(shù)據(jù)庫(kù)SqlParameter 的插入操作,防止sql注入的實(shí)現(xiàn)代碼
今天學(xué)習(xí)了一下SqlParameter的用法,原來(lái)這么寫(xiě)是為了防止sql注入,破壞數(shù)據(jù)庫(kù)的。并自己動(dòng)手連接了數(shù)據(jù)庫(kù)。2013-04-04.NET Framework攔截HTTP請(qǐng)求的實(shí)現(xiàn)
本文主要介紹了.NET Framework攔截HTTP請(qǐng)求的實(shí)現(xiàn),主要用于記錄 HTTP 信息,調(diào)試程序、分析程序性能等方面,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03asp.net發(fā)布后web.config中compilation的debug的值true和false區(qū)別點(diǎn)整理
在本篇文章里小編給大家整理的是一篇關(guān)于asp.net發(fā)布后web.config中compilation的debug的值true和false區(qū)別點(diǎn)內(nèi)容,有需要的為朋友們可以參考下。2020-01-01在.NET Core類(lèi)庫(kù)中使用EF Core遷移數(shù)據(jù)庫(kù)到SQL Server的方法
下面小編就為大家分享一篇在.NET Core類(lèi)庫(kù)中使用EF Core遷移數(shù)據(jù)庫(kù)到SQL Server的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12如何將asp.net core程序部署到Linux服務(wù)器
這篇文章主要介紹了將asp.net core程序部署到Linux服務(wù)器上的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09asp.net+js實(shí)時(shí)奧運(yùn)金牌榜代碼
運(yùn)期間,公司交給我一個(gè)任務(wù),在公司主頁(yè)上放上奧運(yùn)金牌榜的排名,之前的實(shí)現(xiàn)方式是采用ajax2008-09-09ASP.NET Core中自定義路由約束的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core中自定義路由約束的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03基于MVC4+EasyUI的Web開(kāi)發(fā)框架之附件上傳組件uploadify的使用
這篇文章主要介紹了基于MVC4+EasyUI的Web開(kāi)發(fā)框架之附件上傳組件uploadify的使用,需要的朋友可以參考下2017-08-08Asp.net中使用文本框的值動(dòng)態(tài)生成控件的方法
這篇文章主要介紹了Asp.net中使用文本框的值動(dòng)態(tài)生成控件的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05