Beispiel #1
0
        /// <summary>
        /// Добавляет сущность.
        /// </summary>
        /// <param name="entity">Экземпляр сущности для добавления</param>
        public T Add(T entity)
        {
            T result;

            try
            {
                if (entity == null)
                {
                    throw new ArgumentNullException(nameof(entity));
                }
                result = _dataSession.Set <T>().Add(entity);
                _dataSession.SaveChanges();
            }
            catch (DbEntityValidationException dbEx)
            {
                var errorMessage = GetErrorMessage(dbEx);
                throw new Exception(errorMessage, dbEx);
            }
            catch (Exception e)
            {
                _logger.Error(e.Message);
                _dataSession.RollbackTransaction();
                throw;
            }
            return(result);
        }
        public int Add(T entity, bool commit = true)
        {
            Entities.Add(entity);

            if (commit)
            {
                _db.SaveChanges();
            }

            return(entity.ID);
        }
        public override async Task <SaveUserCommand> HandleAsync(
            SaveUserCommand command, CancellationToken cancellationToken = default(CancellationToken))
        {
            var updatedUser        = command.User;
            var getUserQueryResult = await _queryProcessor.ExecuteAsync(new GetUserQuery(updatedUser.UserId));

            var dbUser = getUserQueryResult.User;

            dbUser.Username  = updatedUser.Username;
            dbUser.FirstName = updatedUser.FirstName;
            dbUser.LastName  = updatedUser.LastName;

            dbUser.UserRoles.ToList()
            .ForEach(userRole =>
            {
                if (!updatedUser.UserRoles.Any(ur => ur.RoleId == userRole.RoleId))
                {
                    dbUser.UserRoles.Remove(userRole);
                }
            });

            var rolesToAdd = from userRole in updatedUser.UserRoles
                             where userRole.RoleId > 0 && !dbUser.UserRoles.Any(ur => ur.RoleId == userRole.RoleId)
                             join role in getUserQueryResult.Roles
                             on userRole.RoleId equals role.RoleId
                             select role;

            foreach (var role in rolesToAdd)
            {
                dbUser.UserRoles.Add(new UserRole {
                    User = dbUser, Role = role
                });
            }

            _dataSession.SaveChanges();

            return(command);
        }