//using Dapper;
//using System;
//using System.Collections.Generic;
//using System.Data;
//using System.Data.SqlClient;
//using System.IO;
//using System.Linq;
//using System.Linq.Expressions;
//using System.Text;
//using System.Threading.Tasks;
//using VolPro.Core.Const;
//using VolPro.Core.DBManager;
//using VolPro.Core.Enums;
//using VolPro.Core.Extensions;
//using VolPro.Core.Utilities;
//using MySqlConnector;
//namespace VolPro.Core.Dapper
//{
// public class SqlDapper : ISqlDapper
// {
// private string _connectionString;
// private int? commandTimeout = null;
// private DbCurrentType _dbCurrentType;
// public SqlDapper()
// {
// _connectionString = DBServerProvider.GetConnectionString();
// }
// public SqlDapper(string connKeyName, DbCurrentType dbCurrentType)
// {
// _dbCurrentType = dbCurrentType;
// _connectionString = DBServerProvider.GetConnectionString(connKeyName);
// }
// public SqlDapper(string connKeyName)
// {
// _connectionString = DBServerProvider.GetConnectionString(connKeyName);
// }
// private bool _transaction { get; set; }
// private IDbConnection _transactionConnection = null;
// ///
// /// 超时时间(秒)
// ///
// ///
// ///
// public ISqlDapper SetTimout(int timeout)
// {
// this.commandTimeout = timeout;
// return this;
// }
// private T Execute(Func func, bool beginTransaction = false)
// {
// if (_transaction|| dbTransaction!=null)
// {
// return func(_transactionConnection, dbTransaction);
// }
// if (beginTransaction)
// {
// return ExecuteTransaction(func);
// }
// using (var connection = DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType))
// {
// return func(connection, dbTransaction);
// }
// }
// private T ExecuteTransaction(Func func)
// {
// using (_transactionConnection = DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType))
// {
// try
// {
// _transactionConnection.Open();
// dbTransaction = _transactionConnection.BeginTransaction();
// T reslutT = func(_transactionConnection, dbTransaction);
// dbTransaction.Commit();
// return reslutT;
// }
// catch (Exception ex)
// {
// dbTransaction?.Rollback();
// throw new Exception(ex.Message, ex.InnerException);
// }
// finally
// {
// dbTransaction?.Dispose();
// }
// }
// }
// private async Task ExecuteAsync(Func> funcAsync, bool beginTransaction = false)
// {
// if (_transaction|| dbTransaction!=null)
// {
// return await funcAsync(_transactionConnection, dbTransaction);
// }
// if (beginTransaction)
// {
// return await ExecuteTransactionAsync(funcAsync);
// }
// using (var connection = DBServerProvider.GetDbConnection(_connectionString))
// {
// T reslutT = await funcAsync(connection, dbTransaction);
// if (!_transaction && dbTransaction != null)
// {
// dbTransaction.Commit();
// }
// return reslutT;
// }
// }
// private async Task ExecuteTransactionAsync(Func> funcAsync)
// {
// using (var connection = DBServerProvider.GetDbConnection(_connectionString))
// {
// try
// {
// connection.Open();
// dbTransaction = connection.BeginTransaction();
// T reslutT = await funcAsync(connection, dbTransaction);
// if (!_transaction && dbTransaction != null)
// {
// dbTransaction.Commit();
// }
// return reslutT;
// }
// catch (Exception ex)
// {
// dbTransaction?.Rollback();
// throw new Exception(ex.Message, ex.InnerException);
// }
// }
// }
// ///
// /// 2020.06.15增加Dapper事务处理
// ///
// ///
// public void BeginTransaction(Func action, Action error)
// {
// _transaction = true;
// using (var connection = DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType))
// {
// try
// {
// _transactionConnection = connection;
// _transactionConnection.Open();
// dbTransaction = _transactionConnection.BeginTransaction();
// bool result = action(this);
// if (result)
// {
// dbTransaction?.Commit();
// }
// else
// {
// dbTransaction?.Rollback();
// }
// }
// catch (Exception ex)
// {
// dbTransaction?.Rollback();
// error(ex);
// }
// finally
// {
// _transaction = false;
// dbTransaction?.Dispose();
// }
// }
// }
// ///
// /// var p = new object();
// // p.Add("@a", 11);
// //p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
// //p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
// // ///
// ///
// ///
// ///
// ///
// ///
// public List QueryList(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false)
// {
// return Execute((conn, dbTransaction) =>
// {
// return conn.Query(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout).ToList();
// }, beginTransaction);
// }
// public async Task> QueryListAsync(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false)
// {
// return await ExecuteAsync(async (conn, dbTransaction) =>
// {
// return await conn.QueryAsync(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout);
// }, beginTransaction);
// }
// public async Task QueryFirstAsync(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false) where T : class
// {
// return await ExecuteAsync(async (conn, dbTransaction) =>
// {
// return await conn.QueryFirstOrDefaultAsync(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout);
// }, beginTransaction);
// }
// public T QueryFirst(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false) where T : class
// {
// return Execute((conn, dbTransaction) =>
// {
// return conn.QueryFirstOrDefault(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout);
// }, beginTransaction);
// }
// public async Task QueryDynamicFirstAsync(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false)
// {
// return await ExecuteAsync(async (conn, dbTransaction) =>
// {
// return await conn.QueryFirstOrDefaultAsync(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout);
// }, beginTransaction);
// }
// public dynamic QueryDynamicFirst(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false)
// {
// return Execute((conn, dbTransaction) =>
// {
// return conn.QueryFirstOrDefault(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout);
// }, beginTransaction);
// }
// public async Task QueryDynamicListAsync(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false)
// {
// return await ExecuteAsync(async (conn, dbTransaction) =>
// {
// return await conn.QueryAsync(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout);
// }, beginTransaction);
// }
// public List QueryDynamicList(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false)
// {
// return Execute((conn, dbTransaction) =>
// {
// return conn.Query(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout).ToList();
// }, beginTransaction);
// }
// public async Task