十年河东,十年河西,莫欺少年穷
学无止境,精益求精
可恶的NetCore对DataTable支持的不好,这对于喜欢直接写SQL的童鞋来说非常难受,因此,在NetCore项目中有必要引入优秀的第三方数据库中间件,目前市场上比较优秀的第三方EF框架有很多,例如:Sqlsugar、Dapper、FreeSql 等,当然,微软也有自己的一套EF框架,EntityFrm 和 EfCore,就效率而言,第三方的框架要完胜微软的EF框架,真不知道微软是干啥吃的、
今天,我们使用Dapper这个轻量级的第三方EF框架。
1.安装Dapper
这里直接使用Nuget安装。
安装完成后,我们需要对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; } } }