public void ExecuteTransaction(Action <IDatabase> action) { using (var connection = CreateConnection()) { using (var transaction = connection.BeginTransaction()) { try { using (var cmd = connection.CreateCommand()) { cmd.Transaction = transaction; var db = new CommandDatabase(cmd); db.ExecuteTransaction(action); } transaction.Commit(); } catch { transaction.Rollback(); throw; } } } }
public T ExecuteScalar <T>(string sql, object parameters) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); return(db.ExecuteScalar <T>(sql, parameters)); } } }
public void ExecuteDataReader(string sql, object parameters, Action <DbDataReader> action) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); db.ExecuteDataReader(sql, parameters, action); } } }
public bool HasRow(string sql, object parameters) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); return(db.HasRow(sql, parameters)); } } }
public void BulkCopy(DataTable table, int batchSize) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); db.BulkCopy(table, batchSize); } } }
public async Task ExecuteDataReaderAsync(string sql, object parameters, Action <DbDataReader> action) { using (var connection = await CreateConnectionAsync()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); await db.ExecuteDataReaderAsync(sql, parameters, action); } } }
public async Task <IEnumerable <T> > ExecuteDataReaderAsync <T>(string sql, object parameters, Func <DbDataReader, T> action) { using (var connection = await CreateConnectionAsync()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); // 这里一定要用yield,这样可以延迟执行,直接用return db.ExecuteDataReader(sql, parameters, action)在执行dr.Read()的时候,cmd对象早就释放掉了 return(await db.ExecuteDataReaderAsync(sql, parameters, action)); } } }
public IEnumerable <T> ExecuteDataReader <T>(string sql, object parameters, Func <DbDataReader, T> action) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); // 这里一定要用yield,这样可以延迟执行,直接用return db.ExecuteDataReader(sql, parameters, action)在执行dr.Read()的时候,cmd对象早就释放掉了 foreach (var r in db.ExecuteDataReader(sql, parameters, action)) { yield return(r); } } } }
public void ExecuteSpDataSet(string procedureName, object parameters, Action <DataSet> action) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { using (var adapter = CreateDataAdapter()) { var db = new CommandDatabase(cmd, adapter); db.ExecuteSpDataSet(procedureName, parameters, action); } } } }