private void ChangeRolesOfArticle(int articleId, List <string> roles)
        {
            var articleAccess = new ArticlesAccess();
            var rolesIdLast   = _db.Roles.Where(x => roles.Any(c => c == x.Name)).Select(x => x.Id).ToArray();
            var userRoles     = _db.ArticlesAccesses.Include(x => x.Role)
                                .Where(x => x.ArticleId == articleId)
                                .Select(x => x.Role.Id).ToList();
            // получаем список ролей, которые были добавлены
            var addedRoles = rolesIdLast.Except(userRoles);
            // получаем роли, которые были удалены
            var removedRoles = userRoles.Except(rolesIdLast);

            // Add new Roles
            foreach (var role in addedRoles)
            {
                _db.ArticlesAccesses.Add(new ArticlesAccess()
                {
                    ArticleId = articleId,
                    RoleId    = role
                });
            }
            // Delete old roles
            foreach (var role in removedRoles)
            {
                var access = _db.ArticlesAccesses.FirstOrDefault(x => x.RoleId == role && x.ArticleId == articleId);
                if (access != null)
                {
                    _db.Entry(access).State = EntityState.Deleted;
                }
            }
        }
        /// <summary>
        /// Delete Roles in ArticleAccess
        /// </summary>
        /// <param name="articleId"></param>
        private void DeleteRolesOfArticle(int articleId)
        {
            var articleAccess = new ArticlesAccess();
            var userRoles     = _db.ArticlesAccesses.Include(x => x.Role)
                                .Where(x => x.ArticleId == articleId)
                                .Select(x => x.Role.Id).ToList();

            // Delete old roles
            foreach (var role in userRoles)
            {
                var access = _db.ArticlesAccesses.FirstOrDefault(x => x.RoleId == role && x.ArticleId == articleId);
                if (access != null)
                {
                    _db.Entry(access).State = EntityState.Deleted;
                }
            }
        }