using FreeSql.DatabaseModel; using SafeObjectPool; using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Text; using System.Threading.Tasks; namespace FreeSql { public partial interface IAdo { /// /// 主库连接池 /// ObjectPool MasterPool { get; } /// /// 从库连接池 /// List> SlavePools { get; } /// /// 监视数据库命令对象(执行前,调试) /// Action AopCommandExecuting { get; set; } /// /// 监视数据库命令对象(执行后,用于监视执行性能) /// Action AopCommandExecuted { get; set; } /// /// 数据库类型 /// DataType DataType { get; } #region 事务 /// /// 开启事务(不支持异步),60秒未执行完将自动提交 /// /// 事务体 () => {} void Transaction(Action handler); /// /// 开启事务(不支持异步) /// /// 事务体 () => {} /// 超时,未执行完将自动提交 void Transaction(Action handler, TimeSpan timeout); /// /// 当前线程的事务 /// DbTransaction TransactionCurrentThread { get; } /// /// 事务完成前预删除缓存 /// /// void TransactionPreRemoveCache(params string[] keys); #endregion /// /// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 /// /// /// /// /// void ExecuteReader(Action readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); void ExecuteReader(DbTransaction transaction, Action readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); void ExecuteReader(DbConnection connection, Action readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 查询,ExecuteReader(dr => {}, "select * from user where age > @age", new { age = 25 }) /// /// /// void ExecuteReader(Action readerHander, string cmdText, object parms = null); void ExecuteReader(DbTransaction transaction, Action readerHander, string cmdText, object parms = null); void ExecuteReader(DbConnection connection, Action readerHander, string cmdText, object parms = null); /// /// 查询 /// /// /// object[][] ExecuteArray(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); object[][] ExecuteArray(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); object[][] ExecuteArray(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 查询,ExecuteArray("select * from user where age > @age", new { age = 25 }) /// /// /// /// object[][] ExecuteArray(string cmdText, object parms = null); object[][] ExecuteArray(DbTransaction transaction, string cmdText, object parms = null); object[][] ExecuteArray(DbConnection connection, string cmdText, object parms = null); /// /// 查询 /// /// /// DataTable ExecuteDataTable(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); DataTable ExecuteDataTable(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); DataTable ExecuteDataTable(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 查询,ExecuteDataTable("select * from user where age > @age", new { age = 25 }) /// /// /// /// DataTable ExecuteDataTable(string cmdText, object parms = null); DataTable ExecuteDataTable(DbTransaction transaction, string cmdText, object parms = null); DataTable ExecuteDataTable(DbConnection connection, string cmdText, object parms = null); /// /// 在【主库】执行 /// /// /// /// int ExecuteNonQuery(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); int ExecuteNonQuery(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); int ExecuteNonQuery(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 在【主库】执行,ExecuteNonQuery("delete from user where age > @age", new { age = 25 }) /// /// /// /// int ExecuteNonQuery(string cmdText, object parms = null); int ExecuteNonQuery(DbTransaction transaction, string cmdText, object parms = null); int ExecuteNonQuery(DbConnection connection, string cmdText, object parms = null); /// /// 在【主库】执行 /// /// /// /// object ExecuteScalar(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); object ExecuteScalar(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); object ExecuteScalar(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 在【主库】执行,ExecuteScalar("select 1 from user where age > @age", new { age = 25 }) /// /// /// /// object ExecuteScalar(string cmdText, object parms = null); object ExecuteScalar(DbTransaction transaction, string cmdText, object parms = null); object ExecuteScalar(DbConnection connection, string cmdText, object parms = null); /// /// 执行SQL返回对象集合,Query<User>("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 }) /// /// /// /// /// /// List Query(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); List Query(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); List Query(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 执行SQL返回对象集合,Query<User>("select * from user where age > @age", new { age = 25 }) /// /// /// /// /// List Query(string cmdText, object parms = null); List Query(DbTransaction transaction, string cmdText, object parms = null); List Query(DbConnection connection, string cmdText, object parms = null); #region async /// /// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 /// /// /// /// /// Task ExecuteReaderAsync(Func readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteReaderAsync(DbTransaction transaction, Func readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteReaderAsync(DbConnection connection, Func readerHander, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 }) /// /// /// Task ExecuteReaderAsync(Func readerHander, string cmdText, object parms = null); Task ExecuteReaderAsync(DbTransaction transaction, Func readerHander, string cmdText, object parms = null); Task ExecuteReaderAsync(DbConnection connection, Func readerHander, string cmdText, object parms = null); /// /// 查询 /// /// /// Task ExecuteArrayAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteArrayAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteArrayAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 }) /// /// /// /// Task ExecuteArrayAsync(string cmdText, object parms = null); Task ExecuteArrayAsync(DbTransaction transaction, string cmdText, object parms = null); Task ExecuteArrayAsync(DbConnection connection, string cmdText, object parms = null); /// /// 查询 /// /// /// Task ExecuteDataTableAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteDataTableAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteDataTableAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 }) /// /// /// /// Task ExecuteDataTableAsync(string cmdText, object parms = null); Task ExecuteDataTableAsync(DbTransaction transaction, string cmdText, object parms = null); Task ExecuteDataTableAsync(DbConnection connection, string cmdText, object parms = null); /// /// 在【主库】执行 /// /// /// /// Task ExecuteNonQueryAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteNonQueryAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteNonQueryAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 }) /// /// /// /// Task ExecuteNonQueryAsync(string cmdText, object parms = null); Task ExecuteNonQueryAsync(DbTransaction transaction, string cmdText, object parms = null); Task ExecuteNonQueryAsync(DbConnection connection, string cmdText, object parms = null); /// /// 在【主库】执行 /// /// /// /// Task ExecuteScalarAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteScalarAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task ExecuteScalarAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 }) /// /// /// /// Task ExecuteScalarAsync(string cmdText, object parms = null); Task ExecuteScalarAsync(DbTransaction transaction, string cmdText, object parms = null); Task ExecuteScalarAsync(DbConnection connection, string cmdText, object parms = null); /// /// 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 }) /// /// /// /// /// /// Task> QueryAsync(CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task> QueryAsync(DbTransaction transaction, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); Task> QueryAsync(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] cmdParms); /// /// 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new { age = 25 }) /// /// /// /// /// Task> QueryAsync(string cmdText, object parms = null); Task> QueryAsync(DbTransaction transaction, string cmdText, object parms = null); Task> QueryAsync(DbConnection connection, string cmdText, object parms = null); #endregion } }