public T ExecuteScalar <T>(string sql, object parameters, int commandTimeout) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); return(db.ExecuteScalar <T>(sql, parameters, commandTimeout)); } } }
public void ExecuteDataReader(string sql, object parameters, Action <DbDataReader> action, int commandTimeout) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); db.ExecuteDataReader(sql, parameters, action, commandTimeout); } } }
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) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); db.BulkCopy(table); } } }
public IDictionary <string, object> ExecuteStoredProcedure(string sql, object parameters, IDictionary <string, int> outputParameters) { using (var connection = CreateConnection()) { using (var cmd = connection.CreateCommand()) { var db = new CommandDatabase(cmd); return(db.ExecuteStoredProcedure(sql, parameters, outputParameters)); } } }
public IEnumerable <T> ExecuteDataReader <T>(string sql, object parameters, Func <DbDataReader, T> action, int commandTimeout) { 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, commandTimeout)) { yield return(r); } } } }
private void ExecuteTransaction(IsolationLevel?isolationLevel, Action <IDatabase> action) { using (var connection = CreateConnection()) { using (var transaction = isolationLevel.HasValue ? connection.BeginTransaction(isolationLevel.Value) : 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; } } } }