十年河东,十年河西,莫欺少年穷

学无止境,精益求精

可恶的NetCore对DataTable支持的不好,这对于喜欢直接写SQL的童鞋来说非常难受,因此,在NetCore项目中有必要引入优秀的第三方数据库中间件,目前市场上比较优秀的第三方EF框架有很多,例如:SqlsugarDapperFreeSql 等,当然,微软也有自己的一套EF框架,EntityFrm 和 EfCore,就效率而言,第三方的框架要完胜微软的EF框架,真不知道微软是干啥吃的、

今天,我们使用Dapper这个轻量级的第三方EF框架。

1.安装Dapper

  这里直接使用Nuget安装。

.netCore 引用第三方ORM中间件-Dapper

 

 安装完成后,我们需要对Dapper进行扩展,如下:

using Microsoft.Extensions.Configuration;
using System;
using System.Data;
using System.Data.SqlClient;
using WuAnCommon;

namespace WuAnSqlService
{
    public class DapperHelper
    {
        /// 获取连接字符串        
        private static string Connection= ConfigCommon.Get("WuAnDBContext");
      

        /// 返回连接实例        
        private static IDbConnection dbConnection = null;

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

        /// 定义一个标识确保线程同步        
        private static readonly object locker = new object();
        /// <summary>
        /// 私有构造方法,使外界不能创建该类的实例,以便实现单例模式
        /// </summary>
        private DapperHelper()
        {
            // 这里为了方便演示直接写的字符串,实例项目中可以将连接字符串放在配置文件中,再进行读取。
           
        }

        /// <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;
        }
    }
}
View Code

相关文章:

  • 2021-06-20
  • 2021-04-04
  • 2022-02-17
  • 2022-12-23
  • 2021-12-30
  • 2022-01-08
  • 2021-09-15
猜你喜欢
  • 2022-12-23
  • 2021-08-23
  • 2021-11-14
  • 2022-12-23
  • 2022-02-09
相关资源
相似解决方案