Ejemplo n.º 1
0
        /// <summary>
        /// 手工创建事务提交
        /// </summary>
        /// <param name="transactionActionManager">事务操作管理器</param>
        /// <param name="cancellationToken">取消令牌</param>
        private async Task <int> TransactionCommit(ITransactionActionManager transactionActionManager,
                                                   CancellationToken cancellationToken)
        {
            using (var connection = Database.GetDbConnection())
            {
                if (connection.State == ConnectionState.Closed)
                {
                    await connection.OpenAsync(cancellationToken);
                }
                using (var transaction = connection.BeginTransaction())
                {
                    try
                    {
                        await transactionActionManager.CommitAsync(transaction);

                        Database.UseTransaction(transaction);
                        var result = await base.SaveChangesAsync(cancellationToken);

                        transaction.Commit();
                        return(result);
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 手工创建事务提交
        /// </summary>
        /// <param name="transactionActionManager">事务操作管理器</param>
        /// <param name="cancellationToken">取消令牌</param>
        private async Task <int> TransactionCommit(ITransactionActionManager transactionActionManager,
                                                   CancellationToken cancellationToken)
        {
            using (var connection = Database.GetDbConnection())
            {
                if (connection.State == ConnectionState.Closed)
                {
                    await connection.OpenAsync(cancellationToken);
                }
                var publisher = ServiceProvider.GetService <ICapPublisher>();
                using (var capTransaction = Database.BeginTransaction(publisher, autoCommit: false))
                {
                    try
                    {
                        await transactionActionManager.CommitAsync(
                            publisher.Transaction.Value.DbTransaction as IDbTransaction);

                        var result = await base.SaveChangesAsync(cancellationToken);

                        capTransaction.Commit();
                        return(result);
                    }
                    catch (Exception e)
                    {
                        capTransaction.Rollback();
                        throw;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 手工创建事务提交
        /// </summary>
        /// <param name="transactionActionManager">事务操作管理器</param>
        /// <param name="cancellationToken">取消令牌</param>
        private async Task <int> TransactionCommit(ITransactionActionManager transactionActionManager, CancellationToken cancellationToken)
        {
            var publisher      = LazyServiceProvider.LazyGetService <ICapPublisher>();
            var capTransaction = UnitOfWork.BeginTransaction(publisher, autoCommit: false);
            await transactionActionManager.CommitAsync(
                publisher.Transaction.Value.DbTransaction as IDbTransaction);

            var result = await base.SaveChangesAsync(cancellationToken);

            UnitOfWork.Commit(capTransaction);
            return(result);
            //try
            //{
            //    await transactionActionManager.CommitAsync(
            //        publisher.Transaction.Value.DbTransaction as IDbTransaction);
            //    var result = await base.SaveChangesAsync(cancellationToken);
            //    await capTransaction.CommitAsync(cancellationToken);
            //    return result;
            //}
            //catch (Exception e)
            //{
            //    await capTransaction.RollbackAsync(cancellationToken);
            //    throw;
            //}
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 初始化一个<see cref="MessageEventBus"/>类型的实例
 /// </summary>
 /// <param name="publisher">事件发布器</param>
 /// <param name="transactionActionManager">事务操作管理器</param>
 /// <param name="log">日志操作</param>
 public MessageEventBus(ICapPublisher publisher,
                        ITransactionActionManager transactionActionManager,
                        ILog log)
 {
     Publisher = publisher ?? throw new ArgumentNullException(nameof(publisher));
     TransactionActionManager = transactionActionManager ?? throw new ArgumentNullException(nameof(transactionActionManager));
     Log = log;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 初始化一个<see cref="SqlExecutorBase"/>类型的实例
 /// </summary>
 /// <param name="transactionActionManager">事务操作管理器</param>
 /// <param name="database">数据库</param>
 protected SqlExecutorBase(ITransactionActionManager transactionActionManager, IDatabase database = null)
 {
     TransactionActionManager = transactionActionManager ?? throw new ArgumentNullException(nameof(transactionActionManager));
     Database   = database;
     Connection = database?.GetConnection();
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 初始化一个<see cref="SqlExecutor"/>类型的实例
 /// </summary>
 /// <param name="transactionActionManager">事务操作管理器</param>
 /// <param name="database">数据库</param>
 public SqlExecutor(ITransactionActionManager transactionActionManager, IDatabase database = null) : base(transactionActionManager, database)
 {
 }