Ejemplo n.º 1
0
        /// <summary>
        /// Creates a transaction.
        /// </summary>
        /// <typeparam name="TStepId">The type of the step id.</typeparam>
        /// <typeparam name="TData">The type of the transaction data.</typeparam>
        /// <param name="options">The action to set options.</param>
        /// <returns>The transaction.</returns>
        public ITransaction <TStepId, TData> Create <TStepId, TData>(Action <ICreateTransactionContext <TStepId, TData> > options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            ICreateTransactionContext <TStepId, TData> context = new CreateTransactionContext <TStepId, TData>();

            options(context);
            ILogger logger = this.CreateLogger <TStepId, TData>(context);
            ITransactionCreateInfo <TStepId>   info        = this.CreateTransactionInfo <TStepId, TData>(context);
            CreatePartContext <TStepId, TData> partContext = new CreatePartContext <TStepId, TData>()
            {
                Context = context,
                Logger  = logger,
                Info    = info
            };
            ITransactionDefinition <TStepId, TData> definition   = this.CreateDefinition <TStepId, TData>(partContext);
            ITransactionStorage <TData>             stateStorage = this.CreateStateStorage <TStepId, TData>(partContext);

            TransactionContext <TStepId, TData> transactionContext = new TransactionContext <TStepId, TData>()
            {
                Logger         = logger,
                Info           = info,
                Definition     = definition,
                SessionStorage = stateStorage
            };

            return(new Transaction <TStepId, TData>(transactionContext));
        }
Ejemplo n.º 2
0
        public async Task <ITransactionObject> GetTransactionObjectAsync(CreateTransactionContext context, CancellationToken cancellationToken = default)
        {
            var dbContext = CheckContextAndGetDbContext(context);

            var dbContextTransaction = await dbContext.Database.BeginTransactionAsync(cancellationToken);

            return(new EFCoreTransactionObject(dbContextTransaction));
        }
Ejemplo n.º 3
0
        public ITransactionObject GetTransactionObject(CreateTransactionContext context)
        {
            var dbContext = CheckContextAndGetDbContext(context);

            var dbContextTransaction = dbContext.Database.BeginTransaction();

            return(new EFCoreTransactionObject(dbContextTransaction));
        }
Ejemplo n.º 4
0
        private DbContext CheckContextAndGetDbContext(CreateTransactionContext context)
        {
            CheckValue.NotNull(context.CurrentUnitOfWork, nameof(context.CurrentUnitOfWork));
            CheckValue.NotNull(context.CurrentDbExecutor, nameof(context.CurrentDbExecutor));

            var efDbExecutor = context.CurrentDbExecutor as IEFCoreDbExecutor ??
                               throw new ArgumentException($"Current DbExecutor can not assignable from {nameof(IEFCoreDbExecutor)}");

            CheckValue.NotNull(efDbExecutor.EFCoreDbContext, nameof(efDbExecutor.EFCoreDbContext));

            return(efDbExecutor.EFCoreDbContext);
        }
Ejemplo n.º 5
0
 public Task <ITransactionObject> GetTransactionObjectAsync(CreateTransactionContext context, CancellationToken cancellationToken = default)
 {
     return(Task.FromResult((ITransactionObject) new TestDemoTransactionObject(2020)));
 }
Ejemplo n.º 6
0
 public ITransactionObject GetTransactionObject(CreateTransactionContext context)
 {
     return(new TestDemoTransactionObject(2020));
 }
        public Task <ITransactionObject> GetTransactionObjectAsync(CreateTransactionContext context, CancellationToken cancellationToken = default)
        {
            ITransactionObject result = new TestScopeTransactionObject(new System.Transactions.TransactionScope());

            return(Task.FromResult(result));
        }
 public ITransactionObject GetTransactionObject(CreateTransactionContext context)
 {
     return(new TestScopeTransactionObject(new System.Transactions.TransactionScope()));
 }