日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

.Net Core中Dapper的使用详解

發(fā)布時(shí)間:2025/3/15 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net Core中Dapper的使用详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Dapper?是一個(gè)輕量級(jí)ORM框架,在項(xiàng)目中如果對(duì)性能比較看中,Dapper是一個(gè)不錯(cuò)的選擇。接下來(lái)我們就來(lái)看看如何在項(xiàng)目中使用Dapper.

1.安裝Dapper

  這里直接使用Nuget安裝。

?

?安裝完成之后,發(fā)現(xiàn)Nuget下已經(jīng)有了Dapper。

2.創(chuàng)建DapperHelper

  接下來(lái)創(chuàng)建一個(gè)DapperHelper幫助類,來(lái)進(jìn)行讀取數(shù)據(jù)庫(kù)連接字符串,打開數(shù)據(jù)庫(kù)等操作。

代碼:

public class DapperHelper{/// 數(shù)據(jù)庫(kù)連接名private static string _connection = string.Empty;/// 獲取連接名 private static string Connection{get { return _connection; }//set { _connection = value; } }/// 返回連接實(shí)例 private static IDbConnection dbConnection = null;/// 靜態(tài)變量保存類的實(shí)例 private static DapperHelper uniqueInstance;/// 定義一個(gè)標(biāo)識(shí)確保線程同步 private static readonly object locker = new object();/// <summary>/// 私有構(gòu)造方法,使外界不能創(chuàng)建該類的實(shí)例,以便實(shí)現(xiàn)單例模式/// </summary>private DapperHelper(){// 這里為了方便演示直接寫的字符串,實(shí)例項(xiàng)目中可以將連接字符串放在配置文件中,再進(jìn)行讀取。_connection = @"server=.;uid=sa;pwd=sasasa;database=Dapper";}/// <summary>/// 獲取實(shí)例,這里為單例模式,保證只存在一個(gè)實(shí)例/// </summary>/// <returns></returns>public static DapperHelper GetInstance(){// 雙重鎖定實(shí)現(xiàn)單例模式,在外層加個(gè)判空條件主要是為了減少加鎖、釋放鎖的不必要的損耗if (uniqueInstance == null){lock (locker){if (uniqueInstance == null){uniqueInstance = new DapperHelper();}}}return uniqueInstance;}/// <summary>/// 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象并打開鏈接/// </summary>/// <returns></returns>public static IDbConnection OpenCurrentDbConnection(){if (dbConnection == null){dbConnection = new SqlConnection(Connection);}//判斷連接狀態(tài)if (dbConnection.State == ConnectionState.Closed){dbConnection.Open();}return dbConnection;}}

?

 3.創(chuàng)建上下文 DbContext?作用是調(diào)用Dapper中操作數(shù)據(jù)庫(kù)的方法,里面是我自己封的一些常用方法,當(dāng)然了這一步可以略去,直接調(diào)用也行,這里只是提供一種思路。

?

public static class DbContext{// 獲取開啟數(shù)據(jù)庫(kù)的連接private static IDbConnection Db{get{//創(chuàng)建單一實(shí)例 DapperHelper.GetInstance();return DapperHelper.OpenCurrentDbConnection();}}/// <summary>/// 查出一條記錄的實(shí)體/// </summary>/// <typeparam name="T"></typeparam>/// <param name="sql"></param>/// <returns></returns>public static T QueryFirstOrDefault<T>(string sql, object param = null){return Db.QueryFirstOrDefault<T>(sql, param);}public static Task<T> QueryFirstOrDefaultAsync<T>(string sql, object param = null){return Db.QueryFirstOrDefaultAsync<T>(sql, param);}/// <summary>/// 查出多條記錄的實(shí)體泛型集合/// </summary>/// <typeparam name="T">泛型T</typeparam>/// <returns></returns>public static IEnumerable<T> Query<T>(string sql, object param = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = null, CommandType? commandType = null){return Db.Query<T>(sql, param, transaction, buffered, commandTimeout, commandType);}public static Task<IEnumerable<T>> QueryAsync<T>(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.QueryAsync<T>(sql, param, transaction, commandTimeout, commandType);}public static int Execute(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.Execute(sql, param, transaction, commandTimeout, commandType);}public static Task<int> ExecuteAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.ExecuteAsync(sql, param, transaction, commandTimeout, commandType);}public static T ExecuteScalar<T>(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.ExecuteScalar<T>(sql, param, transaction, commandTimeout, commandType);}public static Task<T> ExecuteScalarAsync<T>(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.ExecuteScalarAsync<T>(sql, param, transaction, commandTimeout, commandType);}/// <summary>/// 同時(shí)查詢多張表數(shù)據(jù)(高級(jí)查詢)/// "select *from K_City;select *from K_Area";/// </summary>/// <param name="sql"></param>/// <returns></returns>public static SqlMapper.GridReader QueryMultiple(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.QueryMultiple(sql, param, transaction, commandTimeout, commandType);}public static Task<SqlMapper.GridReader> QueryMultipleAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null){return Db.QueryMultipleAsync(sql, param, transaction, commandTimeout, commandType);}}

?

接下來(lái)就可以調(diào)用了,DbContext.Action()

嗯。。。就寫到這里吧,以后再接著寫。

?

轉(zhuǎn)載于:https://www.cnblogs.com/jixiaosa/p/10261778.html

總結(jié)

以上是生活随笔為你收集整理的.Net Core中Dapper的使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。