Exemplo n.º 1
0
 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));
         }
     }
 }
Exemplo n.º 2
0
 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);
         }
     }
 }
Exemplo n.º 3
0
 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));
         }
     }
 }
Exemplo n.º 4
0
 public void BulkCopy(DataTable table)
 {
     using (var connection = CreateConnection()) {
         using (var cmd = connection.CreateCommand()) {
             var db = new CommandDatabase(cmd);
             db.BulkCopy(table);
         }
     }
 }
Exemplo n.º 5
0
 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));
         }
     }
 }
Exemplo n.º 6
0
 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);
             }
         }
     }
 }
Exemplo n.º 7
0
        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;
                    }
                }
            }
        }