新聞中心
隨著互聯(lián)網(wǎng)的發(fā)展,單一的數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿足現(xiàn)代應(yīng)用的需求。很多應(yīng)用需要同時(shí)使用多個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)不同的數(shù)據(jù),例如MySQL、PostgreSQL、SQL Server等等。這也就導(dǎo)致開(kāi)發(fā)人員需要掌握多種數(shù)據(jù)庫(kù)操作技術(shù),而且同時(shí)維護(hù)多個(gè)數(shù)據(jù)庫(kù)也需要不小的精力。

目前創(chuàng)新互聯(lián)建站已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、越城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
在這種情況下,Dapper應(yīng)運(yùn)而生。Dapper是一個(gè)高效的.NET對(duì)象映射器,可以輕松地應(yīng)對(duì)多個(gè)數(shù)據(jù)庫(kù),讓開(kāi)發(fā)人員可以集中精力于應(yīng)用開(kāi)發(fā),而不必花費(fèi)大量時(shí)間和精力去處理數(shù)據(jù)庫(kù)相關(guān)的問(wèn)題。
一、什么是Dapper
Dapper是一個(gè)微型的對(duì)象映射器,它可以將數(shù)據(jù)庫(kù)中的數(shù)據(jù)映射為C#中的對(duì)象。Dapper支持多種數(shù)據(jù)庫(kù),包括MySQL、PostgreSQL、SQL Server等等,并且它的性能非常出眾,比Entity Framework和NHibernate等其他ORM框架要快得多。
Dapper的主要特點(diǎn)包括:
1.輕量級(jí):Dapper是一個(gè)非常小的軟件包,只有100多KB,因此在使用過(guò)程中不會(huì)給應(yīng)用程序帶來(lái)額外的開(kāi)銷(xiāo)。
2.簡(jiǎn)單:Dapper的API非常簡(jiǎn)單,很容易上手,開(kāi)發(fā)人員可以快速地理解和使用。
3.高性能:相比其他ORM框架,Dapper的性能非常出色,特別是在處理大量數(shù)據(jù)時(shí)表現(xiàn)尤為突出。
4.擴(kuò)展性強(qiáng):Dapper支持多種數(shù)據(jù)庫(kù),而且開(kāi)發(fā)人員可以通過(guò)擴(kuò)展方法輕松地定制自己的操作。
二、Dapper的使用
Dapper的使用非常簡(jiǎn)單,只需要將Dapper包添加到自己的.NET應(yīng)用程序中即可。然后在代碼中引用Dapper命名空間,就可以開(kāi)始使用Dapper的API了。下面是一個(gè)使用Dapper查詢數(shù)據(jù)庫(kù)的樣例:
using System.Data.SqlClient;
using Dapper;
var connString = “Data Source=myserver;Initial Catalog=mydatabase;User Id=myuser;Password=mypass;”;
using(var con = new SqlConnection(connString))
{
con.Open();
var sql = “SELECT * FROM Users WHERE Id = @Id”;
var user = con.QueryFirstOrDefault(sql, new {Id = 1});
}
在這個(gè)樣例中,我們先創(chuàng)建了一個(gè)SqlConnection對(duì)象,并打開(kāi)連接。然后定義了一個(gè)查詢語(yǔ)句,并使用Dapper的QueryFirstOrDefault方法來(lái)執(zhí)行查詢。QueryFirstOrDefault方法接受兩個(gè)參數(shù),之一個(gè)參數(shù)是查詢語(yǔ)句,第二個(gè)參數(shù)是一個(gè)動(dòng)態(tài)類(lèi)型的對(duì)象,用來(lái)傳遞查詢參數(shù)。在本例中,我們查詢了Id為1的用戶記錄,并使用QueryFirstOrDefault方法將查詢結(jié)果映射到了一個(gè)User對(duì)象中。
Dapper不僅支持查詢操作,還支持更新、刪除、插入等操作。下面是一個(gè)使用Dapper添加記錄的樣例:
using System.Data.SqlClient;
using Dapper;
var connString = “Data Source=myserver;Initial Catalog=mydatabase;User Id=myuser;Password=mypass;”;
using(var con = new SqlConnection(connString))
{
con.Open();
var sql = “INSERT INTO Users(Name, Age) VALUES(@Name, @Age)”;
var user = new { Name = “張三”, Age = 20 };
con.Execute(sql, user);
}
在這個(gè)樣例中,我們定義了一個(gè)插入語(yǔ)句,并使用Dapper的Execute方法來(lái)執(zhí)行插入操作。Execute方法也接受兩個(gè)參數(shù),之一個(gè)參數(shù)是操作語(yǔ)句,第二個(gè)參數(shù)是一個(gè)動(dòng)態(tài)類(lèi)型的對(duì)象,用來(lái)傳遞參數(shù)。
三、Dapper的高級(jí)用法
除了上述基本用法之外,Dapper還支持一些高級(jí)用法,可以進(jìn)一步提高開(kāi)發(fā)效率。
1.存儲(chǔ)過(guò)程支持
可以使用Dapper來(lái)調(diào)用存儲(chǔ)過(guò)程。下面是一個(gè)使用Dapper調(diào)用存儲(chǔ)過(guò)程的樣例:
using System.Data.SqlClient;
using Dapper;
var connString = “Data Source=myserver;Initial Catalog=mydatabase;User Id=myuser;Password=mypass;”;
using(var con = new SqlConnection(connString))
{
con.Open();
var result = con.Query(“MyStoredProcedure”, param: null, commandType: CommandType.StoredProcedure);
}
在這個(gè)樣例中,我們使用Dapper的Query方法來(lái)執(zhí)行存儲(chǔ)過(guò)程。Query方法也接受三個(gè)參數(shù),之一個(gè)參數(shù)是存儲(chǔ)過(guò)程名稱(chēng),第二個(gè)參數(shù)是一個(gè)動(dòng)態(tài)類(lèi)型的對(duì)象,用來(lái)傳遞參數(shù),第三個(gè)參數(shù)是命令類(lèi)型,指示執(zhí)行的是存儲(chǔ)過(guò)程還是SQL語(yǔ)句。
2.多結(jié)果集查詢支持
Dapper還支持在一次查詢中返回多個(gè)結(jié)果集。下面是一個(gè)使用Dapper查詢多個(gè)結(jié)果集的樣例:
using System.Data.SqlClient;
using Dapper;
var connString = “Data Source=myserver;Initial Catalog=mydatabase;User Id=myuser;Password=mypass;”;
using(var con = new SqlConnection(connString))
{
con.Open();
var sql = “SELECT * FROM Table1;SELECT * FROM Table2;”;
using (var multi = con.QueryMultiple(sql))
{
var table1Result = multi.Read();
var table2Result = multi.Read();
}
}
在這個(gè)樣例中,我們使用Dapper的QueryMultiple方法來(lái)執(zhí)行一個(gè)多結(jié)果集查詢。QueryMultiple方法接受一個(gè)查詢語(yǔ)句,并返回一個(gè)包含多個(gè)結(jié)果集的對(duì)象。使用Read方法可以逐個(gè)讀取每個(gè)結(jié)果集。
3.動(dòng)態(tài)查詢支持
Dapper還支持輸入動(dòng)態(tài)查詢。下面是一個(gè)使用Dapper執(zhí)行動(dòng)態(tài)查詢的樣例:
using System.Data.SqlClient;
using Dapper;
var connString = “Data Source=myserver;Initial Catalog=mydatabase;User Id=myuser;Password=mypass;”;
using(var con = new SqlConnection(connString))
{
con.Open();
var query = new { Name = “張三”, Age = 20 };
var sql = $”SELECT * FROM Users WHERE Name = {query.Name} AND Age = {query.Age}”;
var result = con.Query(sql);
}
在這個(gè)樣例中,我們使用動(dòng)態(tài)查詢生成一個(gè)查詢語(yǔ)句,并使用Dapper的Query方法來(lái)執(zhí)行查詢操作。這種方式可以很方便地生成動(dòng)態(tài)查詢,節(jié)省大量代碼。
四、
Dapper是一個(gè)輕量級(jí)、高性能的對(duì)象映射器,可以非常方便地應(yīng)對(duì)多種數(shù)據(jù)庫(kù)。Dapper的API簡(jiǎn)單易用,而且支持多種高級(jí)用法,例如存儲(chǔ)過(guò)程支持、多結(jié)果集查詢支持、動(dòng)態(tài)查詢支持等等。使用Dapper可以大大提高開(kāi)發(fā)效率,使開(kāi)發(fā)人員可以更加專(zhuān)注于業(yè)務(wù)邏輯的開(kāi)發(fā)。
相關(guān)問(wèn)題拓展閱讀:
- C# 使用dapper ExecuteScalar object接收新增后INT主鍵 怎么多了一個(gè)M
C# 使用dapper ExecuteScalar object接收新增后INT主鍵 怎么多了一個(gè)M
你這個(gè)結(jié)果不正常,Dapper的ExecuteScalar和ado.net原侍手芹有的ExecuteScalar一樣,只是返回結(jié)果集的之一個(gè)值,如果只有一個(gè)insert語(yǔ)句,應(yīng)該返回null才對(duì)。
是不是你的語(yǔ)句老畢insert執(zhí)薯蘆行完后,又去select了什么decimal字段?
dapper多數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于dapper多數(shù)據(jù)庫(kù),Dapper:輕松應(yīng)對(duì)多數(shù)據(jù)庫(kù),C# 使用dapper ExecuteScalar object接收新增后INT主鍵 怎么多了一個(gè)M的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),1500元定制網(wǎng)站優(yōu)化全包,先排名后付費(fèi),已為上千家服務(wù),聯(lián)系電話:13518219792
當(dāng)前題目:Dapper:輕松應(yīng)對(duì)多數(shù)據(jù)庫(kù)(dapper多數(shù)據(jù)庫(kù))
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/djooech.html


咨詢
建站咨詢
