在C#中如何使用Dapper詳解(譯)
前言:
Dapper是一款輕量級(jí)ORM工具。如果你在小的項(xiàng)目中,使用Entity Framework、NHibernate 來(lái)處理大數(shù)據(jù)訪問(wèn)及關(guān)系映射,未免有點(diǎn)殺雞用牛刀。你又覺(jué)得ORM省時(shí)省力,這時(shí)Dapper 將是你不二的選擇。
對(duì)象關(guān)系映射(ORM)已經(jīng)被使用了很長(zhǎng)時(shí)間,以解決在編程過(guò)程中對(duì)象模型與數(shù)據(jù)模型在關(guān)系數(shù)據(jù)庫(kù)中不匹配的問(wèn)題。
Dapper是由Stack OverFlow團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源的,輕量級(jí)的ORM.相比于其他的ORM框架,Dapper速度非??臁?/p>
Dapper的設(shè)計(jì)考慮到了性能以及易用性。它支持使用事務(wù),存儲(chǔ)過(guò)程或數(shù)據(jù)批量插入的靜態(tài)和動(dòng)態(tài)對(duì)象綁定。
本文將給大家詳細(xì)介紹關(guān)于C#使用Dapper的相關(guān)內(nèi)容,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
下載和安裝Dapper:
要開(kāi)始使用Dapper,請(qǐng)遵循以下步驟:
1.打開(kāi)Visual Studio
2.點(diǎn)擊文件(File)->新建(New)->項(xiàng)目(Project)
3.從新建項(xiàng)目對(duì)話框中選擇Web->ASP.Net Web Application
4.為項(xiàng)目指定一個(gè)名稱
5.選擇空項(xiàng)目模板
6.點(diǎn)擊“確定”
以上將創(chuàng)建一個(gè)空的ASP.Net應(yīng)用程序項(xiàng)目。
注:如果你已經(jīng)安裝了NuGet,你可以使用NuGet來(lái)安裝Dapper->在解決方案資源管理器中選中項(xiàng)目,右擊項(xiàng)目選擇“管理Nuget包...”,找到Dapper進(jìn)行安裝,成功之后就可以到下一步啦。
在.NET中使用Dapper進(jìn)行CRUD操作:
現(xiàn)在讓我們寫(xiě)一些代碼,使用Dapper對(duì)數(shù)據(jù)庫(kù)進(jìn)行CRUD操作,首先創(chuàng)建一個(gè)名為“IDG”的數(shù)據(jù)庫(kù),它包含一個(gè)名為“Author”的表,表中包含以下字段:ID,FirstName,LastName。
然后我們需要?jiǎng)?chuàng)建一個(gè)實(shí)體類(POCO類),下面是與數(shù)據(jù)庫(kù)IDG中Author表相對(duì)應(yīng)的實(shí)體類Author:
public class Author { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } }
Dapper中的擴(kuò)展方法Query()能夠讓你從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)并填充到對(duì)象模型中。
下面的方法是從Author表中檢索所有記錄,并存儲(chǔ)到內(nèi)存中,最后返回一個(gè)集合:
public List<Author> ReadAll() { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString)) { return db.Query<Author> ("Select * From Author").ToList(); } }
注意需要在程序中包含Dapper命名空間,才能使用Dapper:
using Dapper;
下面的方法演示了如何從Auhor表中檢索特定的一條記錄:
public Author Find(int id) { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString)) { return db.Query<Author>("Select * From Author WHERE Id = @Id", new { id }).SingleOrDefault(); } }
Dapper中的Execute()方法可以用于向數(shù)據(jù)庫(kù)中插入,更新,刪除數(shù)據(jù)。這個(gè)方法會(huì)返回一個(gè)整數(shù),表示在執(zhí)行查詢時(shí)受到影響的行數(shù)。
下面的方法演示了如何用Dapper更新一條記錄:
public int Update(Author author) { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString)) { string sqlQuery = "UPDATE Author SET FirstName = @FirstName, " + " LastName = @LastName “ + “WHERE Id = @Id"; int rowsAffected = db.Execute(sqlQuery, author); return rowsAffected; } }
正如以上代碼所看到的,Update()方法返回受影響的行數(shù),也就是已更新的記錄數(shù),在本例中只會(huì)更新一條記錄,所以方法成功時(shí)將會(huì)返回1.
存儲(chǔ)過(guò)程在Dapper中的使用:
要使用Dapper處理存儲(chǔ)過(guò)程,需在調(diào)用Query()或者Exectue()方法時(shí)顯示地提到命令類型。下面的示例演示了如何使用Dapper來(lái)處理存儲(chǔ)過(guò)程:
public List<Author> Read() { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString)) { string readSp = "GetAllAuthors"; return db.Query<Author>(readSp, commandType: CommandType.StoredProcedure).ToList(); } }
Dapper也支持事務(wù),例如,如果需要我們可以使用事務(wù)操作,為此,你可以利用BeginTransaction() and EndTransaction()方法,就像通常在ADO.NET中處理事務(wù)一樣,然后,您需要在BeginTransaction()和EndTransaction()方法調(diào)用中編寫(xiě)事務(wù)語(yǔ)句。
Dapper非常輕且使用起來(lái)非常簡(jiǎn)單,它不會(huì)為你生成SQL,但是可以很容易地將查詢結(jié)果映射到POCOs(普通的舊CLR對(duì)象).最重要的是,你可以獲得比EntityFrameWork更快的執(zhí)行速度,事實(shí)上,幾乎和ADO.NET一樣。
這是我翻譯的國(guó)外的一篇文章,旨在提升自己的英語(yǔ)水平,以及加深自己對(duì)知識(shí)點(diǎn)的積累,如果能幫助到一些小伙伴那就再好不過(guò)了。
原文鏈接:
https://www.infoworld.com/article/3025784/application-development/how-to-work-with-dapper-in-c.html
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)我們的支持。
上一篇:C#中sqlDataRead 的三種方式遍歷讀取各個(gè)字段數(shù)值的方法
欄 目:C#教程
下一篇:C#如何生成唯一訂單號(hào)
本文標(biāo)題:在C#中如何使用Dapper詳解(譯)
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5095.html
您可能感興趣的文章
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并打開(kāi)的方法
- 01-10C#實(shí)現(xiàn)Winform中打開(kāi)網(wǎng)頁(yè)頁(yè)面的方法
- 01-10C#實(shí)現(xiàn)由四周向中心縮小的窗體退出特效
- 01-10Extjs4如何處理后臺(tái)json數(shù)據(jù)中日期和時(shí)間
- 01-10C#實(shí)現(xiàn)將窗體固定在顯示器的左上角且不能移動(dòng)的方法
- 01-10C#中DataGridView常用操作實(shí)例小結(jié)
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10asp.net中XML如何做增刪改查操作
- 01-10C#實(shí)現(xiàn)在Form里面內(nèi)嵌dos窗體的方法
- 01-10C#利用反射技術(shù)實(shí)現(xiàn)去掉按鈕選中時(shí)的邊框效果


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法