コード例 #1
0
        public async Task <ResultDto <User> > Update(User user)
        {
            ResultDto <User> result;
            var userExist = _dbContext.Repository <User>().Where(x => x.UserId == user.UserId).SingleOrDefault();

            if (userExist == null)
            {
                result = new ResultDto <User>
                {
                    Data         = user,
                    StatusCode   = HttpStatusCode.NotFound,
                    ErrorMessage = "User doesn't exist"
                };
                return(result);
            }
            _dbContext.Update(user);
            _dbContext.Commit();

            result = new ResultDto <User>
            {
                Data       = user,
                StatusCode = HttpStatusCode.OK
            };

            return(result);
        }
コード例 #2
0
        public async Task <Customer> ReadAsync(string id)
        {
            var customer = await _customerRepository.ReadAsync(id);

            _dbContext.Commit();

            return(customer);
        }
コード例 #3
0
ファイル: MarketService.cs プロジェクト: FlavioDiasPs/MarkIt
        public IEnumerable <Market> GetAll()
        {
            var result = _context.Market.GetAll();

            _context.Commit();

            return(result);
        }
コード例 #4
0
        public async Task AddCustomerAsync(Customer customer)
        {
            string query = @"INSERT INTO Customers
                        (CustomerId, Firstname, Lastname, Email, Password, Address, City, PostalCode, Telephone)
                        VALUES(@CustomerId ,@Firstname, @Lastname, @Email, @Password, @Address, @City, @PostalCode, @Telephone)";

            await _connection.ExecuteAsync(query, param : customer, transaction : _transaction, commandType : CommandType.Text);

            _dbContext.Commit();
        }
コード例 #5
0
        public dynamic DeleteAggregate()
        {
            int id = this.Request.Form["id"];

            _dbContext.BeginTransaction();
            _deleteProjectRequestAggregateCommand.Execute(id);
            _dbContext.Commit();

            return(HttpStatusCode.OK);
        }
コード例 #6
0
        public long Add(TEntity obj)
        {
            using (var trans = _uow.BeginTransaction())
            {
                _uow.GetEntity <TEntity>().Add(obj);
                trans.Commit();
                _uow.Commit();

                return(obj.Id);
            }
        }
コード例 #7
0
ファイル: ProductService.cs プロジェクト: FlavioDiasPs/MarkIt
        public IEnumerable <Product> GetAll()
        {
            var result = _context.Product.GetAll();

            _context.Commit();

            return(result);
        }
コード例 #8
0
ファイル: UnitTest1.cs プロジェクト: zhjch626/Dapper.Linq
        public void Transaction()
        {
            IDbContext dbContext = null;

            try
            {
                dbContext = DbContextFactory.GetDbContext();
                dbContext.Open(true);
                dbContext.From <Student>().Insert(new Student()
                {
                    Name = "stduent1"
                });
                //throw new Exception("rollback");
                dbContext.From <School>().Insert(new School()
                {
                    Name = "school1"
                });
                dbContext.Commit();
            }
            catch (Exception)
            {
                dbContext?.Rollback();
                throw;
            }
            finally
            {
                dbContext?.Close();
            }
        }
コード例 #9
0
        public void SaveEventsFor <TAggregate>(Guid?aggregateId, int eventsLoaded, ArrayList newEvents)
        {
            var aggregate = this.Aggregates.Find(aggregateId.Value);

            if (aggregate == null)
            {
                aggregate = new CqrsModels.Aggregate
                {
                    Id             = aggregateId.Value,
                    AggregateType  = typeof(TAggregate).AssemblyQualifiedName,
                    CommitDateTime = DateTime.UtcNow
                };

                Aggregates.Add(aggregate);
            }

            for (int i = 0; i < newEvents.Count; i++)
            {
                var e = newEvents[i];
                eventsLoaded = eventsLoaded + i;
                Events.Add(new CqrsModels.Event
                {
                    Id             = Guid.NewGuid(),
                    AggregateId    = aggregate.Id,
                    SequenceNumber = eventsLoaded,
                    Type           = e.GetType().AssemblyQualifiedName,
                    Body           = SerializeEvent(e),
                    CommitDateTime = aggregate.CommitDateTime
                });
            }



            _context.Commit();
        }
コード例 #10
0
 public void ActualizarCuentaBanco(CuentaBanco cuentaBanco)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             Empresa empresa = dbContext.EmpresaRepository.Find(cuentaBanco.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             dbContext.NotificarModificacion(cuentaBanco);
             dbContext.Commit();
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al actualizar la cuenta bancaría: ", ex);
             throw new Exception("Se produjo un error actualizando la cuenta bancaria. Por favor consulte con su proveedor..");
         }
     }
 }
コード例 #11
0
        public dynamic Save()
        {
            SaveLogFileViewModel model = this.Bind <SaveLogFileViewModel>();

            // make sure the processing directory exists
            _dirWrap.CreateDirectory(_appSettings.LogFileProcessingDirectory);

            foreach (HttpFile f in Request.Files)
            {
                // save the file to disk
                string filePath = Path.Combine(_appSettings.LogFileProcessingDirectory, f.Name);
                using (var fileStream = File.Create(filePath))
                {
                    f.Value.Seek(0, SeekOrigin.Begin);
                    f.Value.CopyTo(fileStream);
                }

                // create the log file record - this will kick off the job to actually process the file
                try
                {
                    _dbContext.BeginTransaction();
                    _createLogFileCommand.Execute(model.ProjectId, filePath);
                    _dbContext.Commit();
                }
                catch (Exception ex)
                {
                    _dbContext.Rollback();
                    return(this.Response.AsJson <string>(ex.Message, HttpStatusCode.BadRequest));
                }
            }
            return(HttpStatusCode.OK);
        }
コード例 #12
0
        public async Task <ReportCore> GetAsync(string id)
        {
            var product = await _reportCoreRepository.GetAsync(id);

            _dbContext.Commit();

            return(product);
        }
コード例 #13
0
ファイル: UnitOfWork.cs プロジェクト: ofood/DatabaseDoc
 public void SaveChanges()
 {
     if (!_dbContext.IsTransactionStarted)
     {
         throw new InvalidOperationException("Transaction have already been commited or disposed.");
     }
     _dbContext.Commit();
 }
コード例 #14
0
        public BusinessResult Add(T entity)
        {
            BusinessResult result = new BusinessResult();

            var id = _repositoryBase.Add(entity);

            _dbContext.Commit();
            if (id > 0)
            {
                result.Code = 1; result.Data = entity; result.Type = "success";
            }
            else
            {
                result.Code = 2; result.Message = "Veri eklenemedi."; result.Type = "warning";
            }
            return(result);
        }
コード例 #15
0
        public async Task AddOrderAsync(Order order)
        {
            string query = @"INSERT INTO Orders (DateCreated, OrderState, CustomerId) 
                      VALUES (@DateCreated, @OrderState, @CustomerId)";

            await _connection.ExecuteAsync(query, param : order, transaction : _transaction, commandType : CommandType.Text);

            _dbContext.Commit();
        }
コード例 #16
0
 public void AnularTraslado(int intIdTraslado, int intIdUsuario, string strMotivoAnulacion)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             Traslado traslado = dbContext.TrasladoRepository.Include("DetalleTraslado").FirstOrDefault(x => x.IdTraslado == intIdTraslado);
             if (traslado == null)
             {
                 throw new Exception("El registro de traslado por anular no existe.");
             }
             if (traslado.Nulo)
             {
                 throw new Exception("El registro de traslado ya ha sido anulado.");
             }
             Empresa empresa = dbContext.EmpresaRepository.Find(traslado.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             SucursalPorEmpresa sucursal = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen);
             if (sucursal == null)
             {
                 throw new BusinessException("Sucursal no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             if (sucursal.CierreEnEjecucion)
             {
                 throw new BusinessException("Se está ejecutando el cierre en este momento. No es posible registrar la transacción.");
             }
             traslado.Nulo            = true;
             traslado.IdAnuladoPor    = intIdUsuario;
             traslado.MotivoAnulacion = strMotivoAnulacion;
             dbContext.NotificarModificacion(traslado);
             if (traslado.IdAsiento > 0)
             {
                 IContabilidadService servicioContabilidad = new ContabilidadService();
                 servicioContabilidad.ReversarAsientoContable(dbContext, traslado.IdAsiento);
             }
             dbContext.Commit();
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al anular el registro de traslado: ", ex);
             throw new Exception("Se produjo un error anulando el traslado. Por favor consulte con su proveedor.");
         }
     }
 }
コード例 #17
0
        protected override void PostProceed(IInvocation invocation)
        {
            var method = invocation.MethodInvocationTarget;

            if (method?.GetCustomAttribute <TransactionalAttribute>() != null)
            {
                //_logger.LogInformation($"{invocation.Method.Name}事务拦截后");
                _dbContext.Commit();
            }
            stopwatch.Stop();
            _logger.LogInformation($"{method}执行时间为:{stopwatch.ElapsedMilliseconds}毫秒");
        }
コード例 #18
0
        public void ExecuteResetProcessedLogFileJob(int logFileId)
        {
            using (IDbContext dbContext = _dbContextFactory.GetDbContext())
            {
                ISetLogFileUnprocessedCommand cmd = new SetLogFileUnprocessedCommand(dbContext
                                                                                     , new JobRegistrationService()
                                                                                     );

                dbContext.BeginTransaction();
                cmd.Execute(logFileId);
                dbContext.Commit();
            }
        }
コード例 #19
0
ファイル: FormRepository.cs プロジェクト: thokozanik/clires
        /// <summary>
        /// The can open form to write for subject.
        /// </summary>
        /// <param name="formId">
        /// The form id.
        /// </param>
        /// <param name="subjectId">
        /// The subject id.
        /// </param>
        /// <param name="appUserId">
        /// The app user id.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/> .
        /// </returns>
        public bool CanOpenFormToWriteForSubject(int formId, int subjectId, int appUserId)
        {
            var lockedForm = _context.FormInProcesses.FirstOrDefault(f => f.FormId == formId && f.SubjectId == subjectId);

            if (lockedForm == null)
            {
                lockedForm = new FormInProcess {
                    AppUserId = 0, FormId = formId, SubjectId = subjectId, IsLocked = false, MaxLockTimeMin = 0
                };
                _context.Commit();
            }

            if (lockedForm.IsLocked)
            {
                if ((DateTime.UtcNow - lockedForm.OpenendOn).Minutes > lockedForm.MaxLockTimeMin || lockedForm.AppUserId == appUserId)
                {
                    UnlockFormFromReadOnly(formId, subjectId, appUserId);
                    _context.Commit();
                }
            }

            return(lockedForm.IsLocked);
        }
コード例 #20
0
        public void Delete()
        {
            _dbContext.BeginTransaction();
            long id = _dbContext.Insert <Employee>(new Employee {
                EmpName = "test"
            });

            _dbContext.Delete <Employee>(id);
            _dbContext.Commit();
            var employee = _dbContext.QueryWhere <Employee>($"Id={id}");

            Assert.NotNull(employee);
            Assert.Equal(0, employee?.Count());
        }
コード例 #21
0
 public string AgregarTraslado(Traslado traslado)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             Empresa empresa = dbContext.EmpresaRepository.Find(traslado.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             SucursalPorEmpresa sucursal = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen);
             if (sucursal == null)
             {
                 throw new BusinessException("Sucursal no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             if (sucursal.CierreEnEjecucion)
             {
                 throw new BusinessException("Se está ejecutando el cierre en este momento. No es posible registrar la transacción.");
             }
             traslado.IdAsiento = 0;
             foreach (var detalle in traslado.DetalleTraslado)
             {
                 var existencias = dbContext.ExistenciaPorSucursalRepository.AsNoTracking().Where(x => x.IdEmpresa == empresa.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen && x.IdProducto == detalle.IdProducto).FirstOrDefault();
                 if (existencias == null)
                 {
                     throw new BusinessException("El producto " + detalle.IdProducto + " no posee registro de existencias en la sucursal origen del traslado.");
                 }
                 if (detalle.Cantidad > existencias.Cantidad)
                 {
                     throw new BusinessException("La cantidad indicada para el produco " + detalle.IdProducto + " supera las existencias en la sucursal origen del traslado.");
                 }
             }
             dbContext.TrasladoRepository.Add(traslado);
             dbContext.Commit();
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al agregar el registro de devolución: ", ex);
             throw new Exception("Se produjo un error agregando la información de la devolución. Por favor consulte con su proveedor.");
         }
     }
     return(traslado.IdTraslado.ToString());
 }
コード例 #22
0
 public void DbTransaction(Action <IDbContext> action)
 {
     try
     {
         _dbContext.BeginTransaction();
         action?.Invoke(_dbContext);
         _dbContext.Commit();
     }
     catch (Exception ex)
     {
         _dbContext.Rollback();
         _logger.LogError(ex.Message);
     }
 }
コード例 #23
0
ファイル: UnitRepository.cs プロジェクト: HeLinSpace/H.EFCore
        /// <summary>
        /// 追加对象
        /// </summary>
        /// <typeparam name="TEntity">参数类型</typeparam>
        /// <param name="entity">追加对象</param>
        public void Insert <TEntity>(TEntity entity, bool isCommit = false) where TEntity : class
        {
            if (entity == null)
            {
                return;
            }
            _context.Set <TEntity>().Add(entity);

            _context.Commit();
        }
コード例 #24
0
 public string AgregarMovimientoBanco(MovimientoBanco movimiento)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             CuentaBanco cuenta = dbContext.CuentaBancoRepository.Find(movimiento.IdCuenta);
             if (cuenta == null)
             {
                 throw new Exception("La cuenta bancaria asignada al movimiento no existe.");
             }
             Empresa empresa = dbContext.EmpresaRepository.Find(cuenta.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             TipoMovimientoBanco tipo = dbContext.TipoMovimientoBancoRepository.Find(movimiento.IdTipo);
             if (tipo == null)
             {
                 throw new Exception("El tipo de movimiento no existe.");
             }
             movimiento.SaldoAnterior = cuenta.Saldo;
             if (tipo.DebeHaber == StaticTipoDebitoCredito.Debito)
             {
                 cuenta.Saldo -= movimiento.Monto;
             }
             else
             {
                 cuenta.Saldo += movimiento.Monto;
             }
             dbContext.MovimientoBancoRepository.Add(movimiento);
             dbContext.NotificarModificacion(cuenta);
             dbContext.Commit();
             return(movimiento.IdMov.ToString());
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al agregar el movimiento bancario: ", ex);
             throw new Exception("Se produjo un error agregando el movimiento bancario. Por favor consulte con su proveedor..");
         }
     }
 }
コード例 #25
0
        /// <summary>
        /// Registers a background job that runs through all the requests for a specific log file, and recalculates the aggregates
        /// for those requests using the project aggregates set by the user.
        /// </summary>
        /// <param name="logFileId"></param>
        public void ExecuteAggregateRequestJob(int logFileId)
        {
            using (IDbContext dbContext = _dbContextFactory.GetDbContext())
            {
                IResetRequestAggregatesCommand cmd = new ResetRequestAggregatesCommand(dbContext
                                                                                       , new LogFileRepository(dbContext)
                                                                                       , new RequestRepository(dbContext)
                                                                                       , new ProjectRequestAggregateRepository(dbContext)
                                                                                       , new RequestAggregationService()
                                                                                       );

                dbContext.BeginTransaction();
                cmd.Execute(logFileId);
                dbContext.Commit();
            }
        }
コード例 #26
0
        /// <summary>
        /// Job registered once a file has been uploaded, to process the contents of the log file.
        /// </summary>
        /// <param name="logFileId"></param>
        /// <param name="filePath"></param>
        public void ExecuteProcessLogFileJob(int logFileId, string filePath)
        {
            using (IDbContext dbContext = _dbContextFactory.GetDbContext())
            {
                IProcessLogFileCommand cmd = new ProcessLogFileCommand(dbContext
                                                                       , new LogFileRepository(dbContext)
                                                                       , new CreateRequestBatchCommand(dbContext, new RequestValidator())
                                                                       , new JobRegistrationService()
                                                                       , new FileWrap()
                                                                       );

                dbContext.BeginTransaction();
                cmd.Execute(logFileId, filePath);
                dbContext.Commit();
            }
        }
コード例 #27
0
        public dynamic ProjectSave()
        {
            ProjectFormViewModel model   = this.Bind <ProjectFormViewModel>();
            ProjectModel         project = Mapper.Map <ProjectFormViewModel, ProjectModel>(model);

            ValidationResult validationResult = _projectValidator.Validate(project);

            if (validationResult.Success)
            {
                _dbContext.BeginTransaction();
                project = _createProjectCommand.Execute(project);
                _dbContext.Commit();
            }

            SaveResultModel result = new SaveResultModel(project.Id.ToString(), validationResult.Success, validationResult.Messages.ToArray());

            return(this.Response.AsJson(result));
        }
コード例 #28
0
 public void AnularMovimientoBanco(int intIdMovimiento, int intIdUsuario, string strMotivoAnulacion)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             MovimientoBanco movimiento = dbContext.MovimientoBancoRepository.Find(intIdMovimiento);
             if (movimiento == null)
             {
                 throw new Exception("El movimiento por eliminar no existe.");
             }
             CuentaBanco cuenta = dbContext.CuentaBancoRepository.Find(movimiento.IdCuenta);
             if (cuenta == null)
             {
                 throw new Exception("La cuenta bancaria asignada al movimiento no existe.");
             }
             Empresa empresa = dbContext.EmpresaRepository.Find(cuenta.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             movimiento.Nulo            = true;
             movimiento.IdAnuladoPor    = intIdUsuario;
             movimiento.MotivoAnulacion = strMotivoAnulacion;
             dbContext.NotificarModificacion(movimiento);
             cuenta.Saldo -= movimiento.Monto;
             dbContext.NotificarModificacion(cuenta);
             dbContext.Commit();
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al anular el movimiento bancario: ", ex);
             throw new Exception("Se produjo un error anulando el movimiento bancario. Por favor consulte con su proveedor..");
         }
     }
 }
コード例 #29
0
        /// <summary>
        /// 事务
        /// </summary>
        /// <param name="sample">The sample.</param>
        /// <param name="sample2">The sample2.</param>
        /// <returns></returns>
        public bool CreateWithTransaction(EFSample sample, EFSample sample2)
        {
            bool result = true;

            using (IDbContext dbcontext = _contextFactory.Create())
            {
                try
                {
                    dbcontext.BeginTransaction();//开启事务
                    dbcontext.Create(sample);
                    dbcontext.Create(sample2);
                    dbcontext.Commit();
                }
                catch (Exception)
                {
                    dbcontext.Rollback();
                    result = false;
                }
            }

            return(result);
        }
コード例 #30
0
ファイル: AgentApp.cs プロジェクト: zhyzhy782/conan.net
        public async Task test()
        {
            Agent entity2 = new Agent();

            entity2.Id            = entity2.CreateId();
            entity2.Name          = "111";
            entity2.ContactNumber = "111";
            entity2.Key           = "111";
            entity2.Secret        = "111";
            entity2.Remarks       = "111";
            await _agentRep.InsertAsync(entity2);


            context.BeginTransaction();

            Agent entity = new Agent();

            entity.Id            = entity.CreateId();
            entity.Name          = "111";
            entity.ContactNumber = "111";
            entity.Key           = "111";
            entity.Secret        = "111";
            entity.Remarks       = "111";
            int r = await _agentRep.InsertAsync(entity);

            context.Commit();


            Agent entity3 = new Agent();

            entity3.Id            = entity3.CreateId();
            entity3.Name          = "111";
            entity3.ContactNumber = "111";
            entity3.Key           = "111";
            entity3.Secret        = "111";
            entity3.Remarks       = "111";
            await _agentRep.InsertAsync(entity3);
        }