using System.Data; using System.Data.SqlClient; using System.Linq.Expressions; using System.Text; using Tiobon.Core.Common.DB.Dapper.Const; using Tiobon.Core.Common.DB.Dapper.DBManager; using Tiobon.Core.Common.DB.Dapper.Enums; namespace Tiobon.Core.Common.DB.Dapper; public class DbAccess { public static ISqlDapper Instance { get { return DBServerProvider.SqlDapper; } } public static bool MySql { get { bool result = false; if (DBType.Name == DbCurrentType.MySql.ToString()) { result = true; } return result; } } #region 数据库名称 /// /// 数据库名称 /// public static string DatabaseName { get { return Instance.Connection.Database; } } #endregion public static DataTable GetDataTable(string sql, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.GetDataTable(sql, param, commandType, beginTransaction); public static async Task GetDataTableAsync(string cmd, object param = null, IDbTransaction transaction = null, CommandType? commandType = null, int? commandTimeout = null) => await Instance.GetDataTableAsync(cmd, param, transaction, commandType, commandTimeout); public static List QueryList(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) where T : class => Instance.QueryList(cmd, param, commandType, beginTransaction); public static async Task> QueryListAsync(string cmd, object param = null, bool beginTransaction = false, CommandType? commandType = null, int? commandTimeout = null) where T : class => await Instance.QueryListAsync(cmd, param, commandType, beginTransaction, commandTimeout); public static T QueryFirst(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) where T : class => Instance.QueryFirst(cmd, param, commandType, beginTransaction); public static async Task QueryFirstAsync(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false, int? commandTimeout = null) where T : class => await Instance.QueryFirstAsync(cmd, param, commandType, beginTransaction, commandTimeout); public static object ExecuteScalar(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.ExecuteScalar(cmd, param, commandType, beginTransaction); public static async Task ExecuteScalarAsync(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) => await Instance.ExecuteScalarAsync(cmd, param, commandType, beginTransaction); public static int ExcuteNonQuery(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.ExcuteNonQuery(cmd, param, commandType, beginTransaction); public static (List, List) QueryMultiple(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.QueryMultiple(cmd, param, commandType, beginTransaction); public static (List, List, List) QueryMultiple(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.QueryMultiple(cmd, param, commandType, beginTransaction); public static int ExecuteDML(string cmd, object param = null, CommandType? commandType = null, IDbTransaction dbTransaction = null) => Instance.ExecuteDML(cmd, param, commandType, dbTransaction); public static async Task ExecuteDMLAsync(string cmd, object param = null, CommandType? commandType = null, IDbTransaction dbTransaction = null) => await Instance.ExecuteDMLAsync(cmd, param, commandType, dbTransaction); public static int Add(T entity, Expression> updateFileds = null, bool beginTransaction = false) { return Instance.Add(entity, updateFileds, beginTransaction); } /// /// /// /// /// /// 指定插入的字段 /// 是否开启事务 /// public static int AddRange(IEnumerable entities, Expression> addFileds = null, bool beginTransaction = true) { return Instance.AddRange(entities, addFileds, beginTransaction); } public static int Update(T entity, Expression> updateFileds = null, bool beginTransaction = true) { return Instance.Update(entity, updateFileds, beginTransaction); } /// ///(根据主键批量更新实体) sqlserver使用的临时表参数化批量更新,mysql待优化 /// /// /// 实体必须带主键 /// 批定更新字段 /// /// public static int UpdateRange(IEnumerable entities, Expression> updateFileds = null, bool beginTransaction = true) { return Instance.UpdateRange(entities, updateFileds, beginTransaction); } public static int BulkInsert(DataTable table, string tableName, SqlBulkCopyOptions? sqlBulkCopyOptions = null, string fileName = null, string tmpPath = null) { return Instance.BulkInsert(table, tableName, sqlBulkCopyOptions, fileName, tmpPath); } }