Example #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;
                    }
                }
            }
        }
Example #2
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);
         }
     }
 }
Example #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));
         }
     }
 }
Example #4
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);
         }
     }
 }
Example #5
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));
         }
     }
 }
Example #6
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);
             }
         }
     }
 }