public bool UpdateUser(User user, IEnumerable<int> roles) { try { if (user == null) { _logger.Error("UpdateUser(User user, IEnumerable<int> roles) user is null "); throw new ArgumentNullException("user"); } User u = _unitOfWork.UserRepository.GetById(user.Id); user.UserRoles = new List<Role>(); foreach (var r in roles) user.UserRoles.Add(_unitOfWork.RoleRepository.GetById(r)); _unitOfWork.UserRepository.AttachStubs(user.UserRoles.ToArray()); foreach (var role in _unitOfWork.RoleRepository.Get().Where(role => role.Users.Any(x => x.Id == user.Id))) { role.Users.Remove(role.Users.First(x => x.Id == user.Id)); } _unitOfWork.Save(); foreach (var prop in u.GetType().GetProperties()) { prop.SetValue(u, user.GetType().GetProperty(prop.Name).GetValue(user)); } _unitOfWork.UserRepository.Update(u); _unitOfWork.Save(); return true; } catch (Exception ex) { _logger.Error("Error in AuthentificationService.cs UpdateUser(User user, IEnumerable<int> roles))" + ex.Message); throw; } }