Exemplo n.º 1
0
        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;
                    }
                }
            }
        }
Exemplo n.º 2
0
 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));
         }
     }
 }
Exemplo n.º 3
0
 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);
         }
     }
 }
Exemplo n.º 4
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.º 5
0
 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);
         }
     }
 }
Exemplo n.º 6
0
 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);
         }
     }
 }
Exemplo n.º 7
0
 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));
         }
     }
 }
Exemplo n.º 8
0
 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);
             }
         }
     }
 }
Exemplo n.º 9
0
 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);
             }
         }
     }
 }