初中萝莉液液酱 .Net Core使用Dapper详解

发布日期:2024-12-06 11:43    点击次数:64

初中萝莉液液酱 .Net Core使用Dapper详解

1、安设Dapper初中萝莉液液酱,在nuget中搜索Dapper,安设到名堂中

图片

图片

2、创建DapperHelper匡助类,来进行读取数据库勾通字符串,大开数据库等操作。在这里有少量要着重:在进行勾通实例化SqlConnection时,需要安设System.Data.SqlClient

 public class DapperHelper
    {
        /// 数据库勾通名
        private static string _connection = string.Empty;

        /// 取得勾通名        
        private static string Connection
        {
            get { return _connection; }
            set { _connection = value; }
        }

        /// 复返勾通实例        
        private static IDbConnection dbConnection = null;

        /// 静态变量保存类的实例        
        private static DapperHelper uniqueInstance;

        /// 界说一个标志确保线程同步        
        private static readonly object locker = new object();
        /// <summary>
        /// 特有构造智力,使外界不行创建该类的实例,以便杀青单例气象
        /// </summary>
        private DapperHelper()
        {
            // 这里为了便捷演示告成写的字符串,实例名堂中不错将勾通字符串放在建立文献中,再进行读取。
            _connection = @"server=;uid=sa;pwd=1122;database=Admin";
        }

        /// <summary>
        /// 取得实例,这里为单例气象,保证只存在一个实例
        /// </summary>
        /// <returns></returns>
        public static DapperHelper GetInstance()
        {
            // 双重锁定杀青单例气象,在外层加个判空条目主如果为了减少加锁、开释锁的无须要的损耗
            if (uniqueInstance == null)
            {
                lock (locker)
                {
                    if (uniqueInstance == null)
                    {
                        uniqueInstance = new DapperHelper();
                    }
                }
            }
            return uniqueInstance;
        }


        /// <summary>
        /// 创建数据库勾通对象并大开相接
        /// </summary>
        /// <returns></returns>
        public static IDbConnection OpenCurrentDbConnection()
        {
            if (dbConnection == null)
            {
                dbConnection = new SqlConnection(Connection);
            }
            //判断勾通状况
            if (dbConnection.State == ConnectionState.Closed)
            {
                dbConnection.Open();
            }
            return dbConnection;
        }
    }

图片

午夜伦理伦理片在线观

3、创建一个DbContext类进行数据库增改造查等操作

 public class DbContext
    {
        // 取得开启数据库的勾通
        private static IDbConnection Db
        {
            get
            {
                //创建单一实例
                DapperHelper.GetInstance();
                return DapperHelper.OpenCurrentDbConnection();
            }
        }

        /// <summary>
        /// 查出一笔记载的实体
        /// </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>
        /// 查出多笔记载的实体泛型纠合
        /// </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>
        /// 同期查询多张表数据(高等查询)
        /// "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);
        }
    }

图片

4、至此建立完成,不错使用dapper进行操作数据库

 //读取数据库
 var sql = "select top 10 * from T_Dat_EmpDataInfo";
 var result = DbContext.Query<T_Dat_EmpDataInfo>(sql);

图片

 初中萝莉液液酱

本站仅提供存储处事,统统本色均由用户发布,如发现存害或侵权本色,请点击举报。