Exemplo n.º 1
0
        public async Task <bool> StoreNewReservation(ReservationDataModel model)
        {
            var reservationModel = _mapper.Map <ReservationInfo>(model);

            //var counter = _context.ReservationInfos.Count()
            reservationModel.BookingReferenceId = "";
            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = _context.Database.BeginTransaction())
            {
                await _context.ReservationInfos.AddAsync(reservationModel);

                await _context.SaveChangesAsync();

                foreach (var item in model.OptionalServicesList)
                {
                    await _context.AdditionalServiceTakens.AddAsync(new AdditionalServicesTaken()
                    {
                        NoOfTimes               = item.NoOfTimes,
                        ReservationInfoId       = reservationModel.Id,
                        Created                 = DateTime.Now,
                        AdditionalServiceRateId = item.AdditionlServiceRateId
                    });
                }
                if (model.OptionalServicesList.Count() > 0)
                {
                    await _context.SaveChangesAsync();
                }
                transaction.Commit();
            }

            if (reservationModel.Id > 0)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 2
0
        public async Task <int> SaveTaskPriortyAsync(TaskPriorityModel model)
        {
            TaskEntity taskEntity = await _taskRep.FirstOrDefaultWithDeletedAsync(m => m.Id == model.Id);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trs = await _uow.BeginTransactionAsync())
            {
                if (taskEntity != null)
                {
                    //güncelleme
                    Mapper.Map(model, taskEntity);
                    taskEntity.TaskPriority = model.TaskPriority;
                    taskEntity.IsDeleted    = false;

                    await _taskRep.UpdateAsync(taskEntity);

                    await _uow.SaveChangesAsync();

                    trs.Commit();
                }
                else
                {
                    throw new NotFoundException("Task", model.Id);
                }
            }

            return(taskEntity.Id);
        }
Exemplo n.º 3
0
        public virtual async Task <List <TEntity> > DeleteManyAsync(Expression <Func <TEntity, bool> > where, CancellationToken cancellationToken = default)
        {
            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = context.Database.BeginTransaction())
            {
                try
                {
                    IEnumerable <TEntity> objects = entities.Where(where).AsEnumerable();
                    foreach (TEntity entity in objects)
                    {
                        await DeleteAsync(entity, false, cancellationToken);
                    }
                    await context.SaveChangesAsync(cancellationToken);

                    transaction.Commit();

                    return(objects.ToList());
                }
                catch (DbUpdateConcurrencyException)
                {
                    transaction.Rollback();
                    throw;
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new DbUpdateException("There is an error when commit transaction.", e);
                }
            }
        }
Exemplo n.º 4
0
        public async Task <int> SaveTaskAsync(TaskModel model)
        {
            TaskEntity taskEntity = await _taskRep.FirstOrDefaultWithDeletedAsync(m => m.Id == model.Id);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trs = await _uow.BeginTransactionAsync())
            {
                if (taskEntity == null)
                {
                    //yeni kayit
                    taskEntity = Mapper.Map <TaskModel, TaskEntity>(model);

                    await _taskRep.AddAsync(taskEntity);

                    await _uow.SaveChangesAsync();

                    trs.Commit();
                }
                else
                {
                    //güncelleme
                    Mapper.Map(model, taskEntity);

                    taskEntity.IsDeleted = false;

                    await _taskRep.UpdateAsync(taskEntity);

                    await _uow.SaveChangesAsync();

                    trs.Commit();
                }
            }

            return(taskEntity.Id);
        }
Exemplo n.º 5
0
        public async Task <int> UpdateClient(UpdateClientRequest request)
        {
            Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = _db.Database.BeginTransaction();
            ClientEntity client = await _db.Client.FindAsync(request.Id);

            if (client == null)
            {
                throw new ClientNotFoundException(request.Id);
            }
            await _db.Client.Where(a => a.Id == request.Id).UpdateAsync(c => new ClientEntity
            {
                FirstName      = request.FirstName,
                LastName       = request.LastName,
                SexId          = (byte)request.Sex,
                PersonalNumber = request.PersonalNumber,
                BirthDate      = request.BirthDate,
                BirthCity      = request.City,
                PhotoUrl       = request.PhotoAddress,
            });

            if (request.PhoneNumbers.Any())
            {
                await _db.ClientPhoneNumber.Where(c => c.ClientId == client.Id && !request.PhoneNumbers.Select(p => (byte)p.Type).Contains(c.TypeId)).DeleteAsync();
            }
            await _db.BulkMergeAsync(request.PhoneNumbers.Select(x => new ClientPhoneNumberEntity {
                ClientId = request.Id, TypeId = (byte)x.Type, Phone = x.Phone
            }), o => o.ColumnPrimaryKeyExpression = c => new { c.ClientId, c.TypeId });

            await transaction.CommitAsync();

            return(client.Id);
        }
        public async Task <IActionResult> OnPostAsync(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Project = await db.Project.FindAsync(id);

            if (Project != null)
            {
                using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        db.ProjectFeature.RemoveRange(db.ProjectFeature.Where(w => w.ProjectId == Project.Id));
                        db.Project.Remove(Project);
                        await db.SaveChangesAsync();

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }

            return(RedirectToPage("./Index"));
        }
        public async Task <int> AddPostAccessLog(int postId, int userId = 0)
        {
            var affected = 0;

            //transaction = dbContext.Database.BeginTransaction();

            dbContext.PostAccessLogs.Add(new PostAccessLog
            {
                PostId    = postId,
                CreatedAt = DateTimeOffset.UtcNow,
                IpAddress = GetRemoteIpAddress(),
                UserAgent = GetUserAgent(),
                UserId    = userId > 0 ? userId : (int?)null
            });

            try
            {
                affected = await dbContext.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                logger.LogError(ex, ex.Message);

                if (transaction != null)
                {
                    transaction.Rollback();
                    transaction.Dispose();
                }

                transaction = null;
            }

            return(affected);
        }
Exemplo n.º 8
0
        public async Task <int> RegisterClient(RegisterClientRequest request)
        {
            Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = _db.Database.BeginTransaction();
            ClientEntity client = new ClientEntity
            {
                FirstName      = request.FirstName,
                LastName       = request.LastName,
                SexId          = (byte)request.Sex,
                PersonalNumber = request.PersonalNumber,
                BirthDate      = request.BirthDate,
                BirthCity      = request.City,
                //PhotoUrl = request.PhotoAddress,
                StatusId = 1
            };
            await _db.Client.SingleInsertAsync(client);

            await _db.ClientPhoneNumber.BulkInsertAsync(request.PhoneNumbers.Select(x => new ClientPhoneNumberEntity {
                ClientId = client.Id, TypeId = (byte)x.Type, Phone = x.Phone
            }));

            //await _db.ClientRelation.BulkInsertAsync(request.RelatedClients.Select(x => new ClientRelation { ClientId = client.Id, TypeId = (byte)x.Type, RelativeId = x.Id }));
            await transaction.CommitAsync();

            return(client.Id);
        }
Exemplo n.º 9
0
        public CommonResponse <CategoryVM> SaveNewData(CategoryVM data, TableTransactionVM transaction)
        {
            CommonResponse <CategoryVM> result;

            using Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction dbTransaction = DbContext.Database.BeginTransaction();

            try
            {
                string transactionId = TransactionRepository.InitializeTransaction(transaction);

                result = CategoryRepository.SaveData(data, transactionId);

                dbTransaction.Commit();
            }
            catch (Exception e)
            {
                dbTransaction.Rollback();

                Logger.LogError("Error Saving Category Data by IP Address {0} : {1}\nInner Ex : {2}",
                                transaction?.IpAddress ?? "",
                                e.Message ?? "",
                                e.InnerException?.Message ?? ""
                                );

                result = new CommonResponse <CategoryVM>
                {
                    Status  = false,
                    Code    = "E-003",
                    Message = "Save Data Failed! Please Contact an Web Administrator!",
                    Data    = new CategoryVM[] { data },
                };
            }

            return(result);
        }
Exemplo n.º 10
0
        public async Task <int> CommitAsync()
        {
            int result = 0;

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = _dbContext.Database.BeginTransaction())
            {
                try
                {
                    result = await _dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (DbUpdateConcurrencyException)
                {
                    transaction.Rollback();
                    throw;
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new DbUpdateException("There is an error when commit transaction.", e);
                }
            }
            return(result);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Saves all pending changes
        /// </summary>
        /// <returns>The number of objects in an Added, Modified, or Deleted state</returns>
        public int Commit()
        {
            // Save changes with the default options
            int result = 0;

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = _dbContext.Database.BeginTransaction())
            {
                try
                {
                    result = _dbContext.SaveChanges();
                    transaction.Commit();
                }
                catch (DbUpdateConcurrencyException)
                {
                    transaction.Rollback();
                    throw;
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new DbUpdateException("There is an error when commit transaction.", e);
                }
            }
            return(result);
        }
Exemplo n.º 12
0
        public async Task <int> SaveAddressAsync(AddressModel model)
        {
            AddressEntity addressEntity = await _addressRep.FirstOrDefaultAsync(m => m.Id == model.Id);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trs = await _uow.BeginTransactionAsync())
            {
                if (addressEntity == null)
                {
                    //yeni kayit
                    addressEntity = Mapper.Map <AddressModel, AddressEntity>(model);

                    await _addressRep.AddAsync(addressEntity);

                    await _uow.SaveChangesAsync();
                }
                else
                {
                    //güncelleme
                    Mapper.Map(model, addressEntity);

                    await _addressRep.UpdateAsync(addressEntity);

                    await _uow.SaveChangesAsync();
                }

                trs.Commit();
            }

            return(addressEntity.Id);
        }
Exemplo n.º 13
0
        public virtual int ExecuteSqlCommand(string sql, bool doNotEnsureTransaction = false, int?timeout = null, params object[] parameters)
        {
            //set specific command timeout
            int?previousTimeout = Database.GetCommandTimeout();

            Database.SetCommandTimeout(timeout);

            int result = 0;

            if (!doNotEnsureTransaction)
            {
                //use with transaction
                using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = Database.BeginTransaction())
                {
                    result = Database.ExecuteSqlRaw(sql, parameters: parameters);
                    transaction.Commit();
                }
            }
            else
            {
                result = Database.ExecuteSqlRaw(sql, parameters: parameters);
            }

            //return previous timeout back
            Database.SetCommandTimeout(previousTimeout);

            return(result);
        }
Exemplo n.º 14
0
        public FuncResult Bind(List <SysUserDataCondition> model, string currentUserId)
        {
            //检查是否重复绑定
            foreach (SysUserDataCondition obj in model)
            {
                SysUserDataCondition entity = _context.SysUserDataCondition.
                                              FirstOrDefault(e => ((!string.IsNullOrWhiteSpace(obj.UserGroupId) && e.UserGroupId == obj.UserGroupId) || (e.UserId == obj.UserId)) &&
                                                             e.ConditionId == obj.ConditionId && e.ConditionValue == obj.ConditionValue &&
                                                             e.ControllerId == obj.ControllerId);
                if (entity != null)
                {
                    return(new FuncResult()
                    {
                        IsSuccess = false, Message = $"[{obj.ConditionValue}] 已经绑定请勿重复操作!"
                    });
                }

                entity = new SysUserDataCondition()
                {
                    Id             = Guid.NewGuid().ToString("N"),
                    UserId         = obj.UserId,
                    UserGroupId    = obj.UserGroupId,
                    ConditionName  = obj.ConditionName,
                    ConditionId    = obj.ConditionId,
                    ConditionValue = obj.ConditionValue,
                    ControllerId   = obj.ControllerId,
                    SortValue      = obj.SortValue,

                    CreatedBy      = currentUserId,
                    CreationDate   = DateTime.Now,
                    LastUpdatedBy  = currentUserId,
                    LastUpdateDate = DateTime.Now
                };
                _context.SysUserDataCondition.Add(entity);
            }

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    _context.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    LogService.WriteError(ex);
                    trans.Rollback();
                    return(new FuncResult()
                    {
                        IsSuccess = false, Message = "添加数据时发生了预料之外的错误,请稍后重试"
                    });
                }
            }
            return(new FuncResult()
            {
                IsSuccess = true
            });
        }
        /// <summary>
        /// Executes the given SQL against the database
        /// </summary>
        /// <param name="sql">The SQL to execute</param>
        /// <param name="doNotEnsureTransaction">true - the transaction creation is not ensured; false - the transaction creation is ensured.</param>
        /// <param name="timeout">The timeout to use for command. Note that the command timeout is distinct from the connection timeout, which is commonly set on the database connection string</param>
        /// <param name="parameters">Parameters to use with the SQL</param>
        /// <returns>The number of rows affected</returns>
        public virtual int ExecuteSqlCommand(RawSqlString sql, bool doNotEnsureTransaction = false, int?timeout = null, params object[] parameters)
        {
            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = Database.BeginTransaction()) {
                int result = Database.ExecuteSqlCommand(sql, parameters);
                transaction.Commit();

                return(result);
            }
        }
Exemplo n.º 16
0
        public async Task <FuncResult> Add(DataConditionModel model, string currentUserId)
        {
            if (_context.SysDataCondition.FirstOrDefault(e => e.TableName.ToUpper() == model.TableName.ToUpper()) != null)
            {
                return(new FuncResult()
                {
                    IsSuccess = false, Message = "数据维度表名不能重复"
                });
            }

            SysDataCondition entity = new SysDataCondition
            {
                SysDataConditionId = Guid.NewGuid().ToString("N"),
                ConditionName      = model.ConditionName,
                ParentId           = model.ParentId,
                SortValue          = model.SortValue,
                ConditionDesc      = model.ConditionDesc,
                ConditionValue     = model.ConditionValue,

                TableName          = model.TableName,
                ParentColumn       = model.ParentColumn,
                ConditionValueDesc = model.ConditionValueDesc,
                ChildColumn        = model.ChildColumn,
                MasterSlaveFlag    = model.MasterSlaveFlag == true?1:0,

                CreationDate   = DateTime.Now,
                CreatedBy      = currentUserId,
                LastUpdateDate = DateTime.Now,
                LastUpdatedBy  = currentUserId
            };
            await _context.SysDataCondition.AddAsync(entity);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                    return(new FuncResult()
                    {
                        IsSuccess = true, Content = entity, Message = "添加成功"
                    });
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(new FuncResult()
                    {
                        IsSuccess = false, Content = ex.Message, Message = "添加失败"
                    });
                }
            }
        }
Exemplo n.º 17
0
        public async Task <FuncResult> Add(SysModelInfo model, string currentUserId)
        {
            //模块名称不能重复
            if (_context.SysModelInfo.FirstOrDefault(e => e.ModelName == model.ModelName) != null)
            {
                return(new FuncResult()
                {
                    IsSuccess = false, Message = "模块名不能重复!"
                });
            }
            if (string.IsNullOrWhiteSpace(model.ModelGroupId))
            {
                return(new FuncResult()
                {
                    IsSuccess = false, Message = "所属模块组不能为空"
                });
            }

            model.ModelId        = Guid.NewGuid().ToString();
            model.LastUpdatedBy  = currentUserId;
            model.LastUpdateDate = DateTime.Now;
            model.CreatedBy      = currentUserId;
            model.CreationDate   = DateTime.Now;
            model.DeleteFlag     = 0;
            await _context.SysModelInfo.AddAsync(model);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(new FuncResult()
                    {
                        IsSuccess = false, Message = ex.Message
                    });
                }
            }
            return(new FuncResult()
            {
                IsSuccess = true, Content = model, Message = "添加成功"
            });
        }
Exemplo n.º 18
0
        public void Create(Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction dbt, Guid key)
        {
            try
            {
                _dbContext.TransactionLog2.Add(new TransactionLog2 {
                    Key = key
                });
                _dbContext.SaveChanges();

                _dbContext.Database.CommitTransaction(); // If not, nothing occurs
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <FuncResult> Add(SysUserInfoModel model, int currentUserId)
        {
            SysUserInfo entity = new SysUserInfo
            {
                User_Account     = model.UserAccount,
                User_Name        = model.UserName,
                User_Password    = model.UserPassword,
                User_Org_Id      = model.UserOrgId,
                User_Group_Names = model.UserGroupNames,
                User_Email       = model.UserEmail,
                User_Is_Ldap     = model.UserIsLdap,
                User_Mobile_No   = model.UserMobileNo,
                User_Ower        = model.UserOwer,
                Language_Code    = model.LanguageCode,
                User_Is_Lock     = model.UserIsLock,
                Eff_Start_Date   = model.EffStartDate,
                Eff_End_Date     = model.EffEndDate,

                Creation_Date = DateTime.Now,
                Created_By    = currentUserId
            };
            await _context.SysUserInfos.AddAsync(entity);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(new FuncResult()
                    {
                        IsSuccess = false, Content = ex.Message
                    });
                }
            }


            return(new FuncResult()
            {
                IsSuccess = true, Content = entity, Message = "添加成功"
            });
        }
        public async Task <FuncResult> Add(SysModelGroupModel model, int currentUserId)
        {
            var entity = new SysModelGroup()
            {
                Model_Group_Code = model.ModelGroupCode,
                Model_Group_Name = model.ModelGroupName,
                Parent_Id        = model.ParentId,
                Sort_Flag        = model.SortFlag,
                Enable_Flag      = model.EnableFlag,
                Image_Url        = model.ImageUrl,
                Group_Belong     = model.GroupBelong,
                Biz_Sys_Code     = model.BizSysCode,

                Last_Updated_By  = currentUserId,
                Last_Update_Date = DateTime.Now,

                Created_By    = currentUserId,
                Creation_Date = DateTime.Now
            };
            await _context.SysModelGroups.AddAsync(entity);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(new FuncResult()
                    {
                        IsSuccess = false, Content = ex.Message
                    });
                }
            }
            return(new FuncResult()
            {
                IsSuccess = true, Content = entity, Message = "添加成功"
            });
        }
        public async Task <bool> Transaction(Action action)
        {
            bool isCommitted = default;

            Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = null;
            try
            {
                transaction = AppDbContext.Database.BeginTransaction();
                action.Invoke();
                SetAudit();
                await transaction.CommitAsync();
            }
            catch (Exception exception)
            {
                await transaction.RollbackAsync();

                Logger.WriteLog(logType: CommonEnum.LogLevelEnum.Error, MethodBase.GetCurrentMethod(), exception: exception);
            }
            return(isCommitted);
        }
Exemplo n.º 22
0
 public void PlaceOrder(Models.Order order)
 {
     Entities.StoreOrder o = new Entities.StoreOrder();
     if (order.Location.LocationID != null)
     {
         o.LocationId = (int)order.Location.LocationID;
     }
     if (order.Customer.CustomerID != null)
     {
         o.CustomerId = (int)order.Customer.CustomerID;
     }
     o.CheckedOut = DateTime.Now;
     ctx.StoreOrders.Add(o);
     foreach (Models.Item i in order.Items)
     {
         Entities.OrderItem oi = new Entities.OrderItem();
         if (i.Product.ProductID != null)
         {
             oi.ProductId = (int)i.Product.ProductID;
         }
         oi.Quantity = i.Quantity;
         o.OrderItems.Add(oi);
     }
     ctx.SaveChanges();
     try {
         transaction.Commit();
         using var log = new LoggerConfiguration()
                         .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day, shared: true)
                         .CreateLogger();
         log.Information("TRANSACTION: Committed");
         transaction.Dispose();
         transaction = ctx.Database.BeginTransaction();
     } catch (Exception e) {
         Console.WriteLine(e.StackTrace);
         using var log = new LoggerConfiguration()
                         .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day, shared: true)
                         .CreateLogger();
         log.Information("TRANSACTION: Rolled back due to database throwing exception");
         transaction.Rollback();
     }
 }
Exemplo n.º 23
0
        public async Task <FuncResult> Delete(string[] ids, int currentuserId)
        {
            var entitys = _context.SysModules.Where(e => ids.Contains(e.Id));

            if (entitys.Count() != ids.Length)
            {
                return(new FuncResult()
                {
                    IsSuccess = false, Message = "参数错误"
                });
            }
            foreach (var obj in entitys)
            {
                obj.Delete_By   = currentuserId;
                obj.Delete_Flag = true;
                obj.Delete_Time = DateTime.Now;
                _context.SysModules.Update(obj);
            }
            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogService.WriteError(ex);
                    return(new FuncResult()
                    {
                        IsSuccess = false, Message = "删除时发生了意料之外的错误"
                    });
                }
            }
            return(new FuncResult()
            {
                IsSuccess = true, Message = $"已成功删除{ids.Length}条记录"
            });
        }
Exemplo n.º 24
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                ViewData["ClientId"] = new SelectList(db.Client, "Id", "Code");
                return(Page());
            }


            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var projectFeatureResult = await new ProjectService().UploadProjectFeaturesAsync(UploadFeatureFile, Project.Id);

                    // Perform a second check to catch ProcessFormFile method
                    // violations.
                    if (!projectFeatureResult.ModelState.IsValid)
                    {
                        ViewData["ClientId"] = new SelectList(db.Client, "Id", "Code");
                        return(Page());
                    }

                    db.ProjectFeature.AddRange(projectFeatureResult.ProjectFeatures);
                    db.Project.Add(Project);

                    await db.SaveChangesAsync();

                    transaction.Commit();

                    return(RedirectToPage("./Index"));
                }

                catch (Exception)
                {
                    transaction.Rollback();

                    throw;
                }
            }
        }
Exemplo n.º 25
0
        public async Task <FuncResult> Delete(string[] ids, string currentUserId)
        {
            IQueryable <ApdFctTAx> entitys = _context.ApdFctTAx.Where(e => ids.Contains(e.RECORD_ID));

            if (entitys.Count() != ids.Length)
            {
                return(new FuncResult()
                {
                    IsSuccess = false, Message = "参数错误"
                });
            }
            foreach (ApdFctTAx obj in entitys)
            {
                //删除
                _context.ApdFctTAx.Remove(obj);
            }
            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogService.WriteError(ex);
                    return(new FuncResult()
                    {
                        IsSuccess = false, Message = "删除时发生了意料之外的错误"
                    });
                }
            }
            return(new FuncResult()
            {
                IsSuccess = true, Message = $"已成功删除{ids.Length}条记录"
            });
        }
Exemplo n.º 26
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            Project.ModifiedDate = DateTime.UtcNow;
            Project.ModifiedBy   = User.Identity.Name;

            db.Attach(Project).State = EntityState.Modified;

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    await db.SaveChangesAsync();

                    transaction.Commit();

                    return(RedirectToPage("./Index"));
                }
                catch (DbUpdateConcurrencyException)
                {
                    transaction.Rollback();

                    if (!ProjectExists(Project.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
Exemplo n.º 27
0
        public async Task <FuncResult> Add(SysModuleModel model, int currentUserId)
        {
            //模块名称不能重复
            if (_context.SysModules.FirstOrDefault(e => e.ModuleName == model.ModuleName) != null)
            {
                return(new FuncResult()
                {
                    IsSuccess = false, Message = "模块名不能重复!"
                });
            }
            int level = 1;

            if (!string.IsNullOrWhiteSpace(model.ParentId))
            {
                var parent_entity = _context.SysModules.FirstOrDefault(e => e.Id == model.ParentId);
                if (parent_entity == null)
                {
                    return(new FuncResult()
                    {
                        IsSuccess = false, Message = "父级ID错误"
                    });
                }
                level = parent_entity.Level + 1;
            }

            var entity = new SysModule()
            {
                ModuleName = model.ModuleName,
                Level      = level,
                ParentId   = model.ParentId,


                Last_Updated_By  = currentUserId,
                Last_Update_Date = DateTime.Now,

                Created_By    = currentUserId,
                Creation_Date = DateTime.Now
            };
            await _context.SysModules.AddAsync(entity);

            using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.SaveChangesAsync();

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(new FuncResult()
                    {
                        IsSuccess = false, Content = ex.Message
                    });
                }
            }
            return(new FuncResult()
            {
                IsSuccess = true, Content = entity, Message = "添加成功"
            });
        }
Exemplo n.º 28
0
 private void saveDBBtn_Click(object sender, EventArgs e)//+
 {
     try
     {
         using (profileContext db = new profileContext())
         {
             using (Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction tr = db.Database.BeginTransaction())
             {
                 try
                 {
                     try
                     {
                         DataManipulationService.SaveProfileToDB(db, tr, Document);
                         tr.Commit();
                     }
                     catch (Exception ex)
                     {
                         tr.Rollback();
                         MessageBox.Show(ex.Message);
                         return;
                     }
                     DataManipulationService.SaveResultToDB(db, tr, Document);
                 }
                 catch (Exception ex)
                 {
                     MainProfile mainProfile = db.MainProfile.SingleOrDefault(p => p.Name == Document.DocumentName);
                     if (mainProfile != null)
                     {
                         db.MainProfile.Remove(mainProfile);
                         db.SaveChanges();
                     }
                     MessageBox.Show(ex.Message);
                     return;
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
        /// <summary>
        /// Persists all updates to the data source and resets change tracking in the object context.
        /// </summary>
        /// <returns>The number of objects in an System.Data.Entity.EntityState.Added, System.Data.Entity.EntityState.Modified, or System.Data.Entity.EntityState.Deleted state when System.Data.Objects.ObjectContext.SaveChanges() was called.</returns>
        public override int SaveChanges()
        {
            var cancel = false;

            OnBeforeSaveChanges(ref cancel);
            if (cancel)
            {
                return(0);
            }

            var markedTime = System.DateTime.Now;

            //Get the added list
            var addedList = this.ChangeTracker.Entries().Where(x => x.State == EntityState.Added);

            //Process added list
            foreach (var item in addedList)
            {
                var entity = item.Entity as IAuditable;
                if (entity != null)
                {
                    var audit = entity as IAuditableSet;
                    if (entity.IsModifyAuditImplemented && entity.ModifiedBy != this.ContextStartup.Modifier)
                    {
                        if (audit != null)
                        {
                            audit.CreatedBy = this.ContextStartup.Modifier;
                        }
                        if (audit != null)
                        {
                            audit.ModifiedBy = this.ContextStartup.Modifier;
                        }
                    }
                    audit.CreatedDate  = markedTime;
                    audit.ModifiedDate = markedTime;
                }
            }
            this.OnBeforeSaveAddedEntity(new EventArguments.EntityListEventArgs {
                List = addedList
            });

            //Process modified list
            var modifiedList = this.ChangeTracker.Entries().Where(x => x.State == EntityState.Modified);

            foreach (var item in modifiedList)
            {
                var entity = item.Entity as IAuditable;
                if (entity != null)
                {
                    var audit = entity as IAuditableSet;
                    if (entity.IsModifyAuditImplemented && entity.ModifiedBy != this.ContextStartup.Modifier)
                    {
                        if (audit != null)
                        {
                            audit.ModifiedBy = this.ContextStartup.Modifier;
                        }
                    }
                    audit.ModifiedDate = markedTime;
                }
            }
            this.OnBeforeSaveModifiedEntity(new EventArguments.EntityListEventArgs {
                List = modifiedList
            });

            var retval = 0;

            Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction customTrans = null;
            try
            {
                _paramList.Clear();
                if (base.Database.CurrentTransaction == null)
                {
                    customTrans = base.Database.BeginTransaction();
                }
                retval += base.SaveChanges();
                if (customTrans != null)
                {
                    customTrans.Commit();
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                if (customTrans != null)
                {
                    customTrans.Dispose();
                }
            }
            this.OnAfterSaveAddedEntity(new EventArguments.EntityListEventArgs {
                List = addedList
            });
            this.OnAfterSaveModifiedEntity(new EventArguments.EntityListEventArgs {
                List = modifiedList
            });
            OnAfterSaveChanges();
            return(retval);
        }
Exemplo n.º 30
0
        public Task <OrderPenjualan> UpdateOrder(int id, OrderPenjualan order)
        {
            Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction trans = dbContext.Database.BeginTransaction();
            try
            {
                //    dbContext.ChangeTracker.Clear();
                ValidateCreateOrder(order);
                var lastOrder = dbContext.OrderPenjualan.Where(x => x.Id == id)
                                .Include(x => x.Gudang)
                                .Include(x => x.Customer)
                                .Include(x => x.Sales)
                                .Include(x => x.Items).FirstOrDefault();

                if (lastOrder == null)
                {
                    throw new SystemException("Order Not Found  !");
                }


                if (lastOrder.Customer.Id != order.Customer.Id)
                {
                    lastOrder.Customer = order.Customer;
                }

                if (lastOrder.Sales.Id != order.Sales.Id)
                {
                    lastOrder.Sales = order.Sales;
                }

                if (lastOrder.Gudang.Id != order.Gudang.Id)
                {
                    lastOrder.Gudang = order.Gudang;
                }
                lastOrder.DeadLine = order.DeadLine;

                foreach (var item in order.Items)
                {
                    if (item.Id <= 0)
                    {
                        dbContext.Entry(item.Product).State = EntityState.Detached;
                        dbContext.Entry(item.Unit).State    = EntityState.Detached;
                        dbContext.OrderPenjualanItem.Add(item);
                    }
                    else
                    {
                        var olditem = lastOrder.Items.Where(x => x.Id == item.Id).FirstOrDefault();
                        if (olditem != null)
                        {
                            if (olditem.Product != null)
                            {
                                dbContext.Entry(olditem.Product).State = EntityState.Unchanged;
                            }
                            if (olditem.Unit != null)
                            {
                                dbContext.Entry(olditem.Unit).State = EntityState.Unchanged;
                            }
                            dbContext.Entry <OrderPenjualanItem>(olditem).CurrentValues.SetValues(item);
                        }
                    }
                }

                dbContext.Entry <OrderPenjualan>(lastOrder).CurrentValues.SetValues(order);
                foreach (var item in lastOrder.Items)
                {
                    var existsDb = order.Items.Where(x => x.Id == item.Id).FirstOrDefault();
                    if (existsDb == null)
                    {
                        lastOrder.Items.Remove(item);
                    }
                }
                var result = dbContext.SaveChanges();
                trans.Commit();
                return(Task.FromResult(order));
            }
            catch (Exception ex)
            {
                trans.Rollback();
                throw new SystemException(ex.Message);
            }
        }