Как удалить атрибут «многие ко многим» из БД - PullRequest
0 голосов
/ 04 ноября 2018

Имею в БД отношение «многие ко многим» между 2 таблицами. И я сначала использую EF Code из Db.

Таблица Жанры :

public partial class Genres

    {
        public Genres()
        {
            Post = new HashSet<Post>();
        }

        public int GenresID { get; set; }

        [StringLength(90)]
        public string GenresName { get; set; }

        [StringLength(128)]
        public string GenresSlug { get; set; }

        [StringLength(200)]
        public string GenresDescription { get; set; }

        public virtual ICollection<Post> Post { get; set; }
    }

Таблица Пост :

public partial class Post
    {

        public Post()
        {
            Genres = new HashSet<Genres>();
        }

        public int PostID { get; set; }

        [Display(Name = "Title")]
        [Required]
        [StringLength(150)]
        public string Name { get; set; }

        [AllowHtml]
        [Display(Name = "Description")]
        [Column(TypeName = "text")]
        public string Description { get; set; }


        [Display(Name = "Publish Date")]
        public DateTime PublishDate { get; set; }


        [Display(Name = "Genres")]
        [Required]
        [StringLength(200)]
        public string GenresList { get; set; }   

        public virtual ICollection<Genres> Genres { get; set; }
    }

Теперь у меня есть на самом деле Два вопроса :

1- Как удалить значения из таблицы GenresPost, которая создается из этого отношения? Только из GenresPost Я не хочу удалять свое сообщение или влиять на него.

2-В моей Жанрах Таблица Когда я добавляю новое сообщение, я получаю жанры из текстового поля, например:

Drama, Romance, Shoujo

и затем я разделяю их и добавляю, но они продолжают повторяться в базе данных, и мне нужно, чтобы они были уникальными, поэтому, когда я добавляю, например, драму, и добавляю ее снова в другой пост, я хочу проверить, существует ли она так мне не нужно добавлять его снова ... и вот мой код для этого, но он не сработал у меня:

post.GenresList содержит такие жанры, как этот (Драма, Романс, Сёдзё)

if (post.GenresList != null)
            {
                Collection<Genres> GenresPost = new Collection<Genres>();
                var s = post.GenresList.ToString();
                string[] newGenres = s.Split(',');

                foreach (var val in newGenres)
                {
                    var iTag = db.Genres.FirstOrDefault(t => t.GenresName == val);

                        if (iTag == null && val.Length > 1)
                        {

                            iTag = new Genres
                            {
                                GenresName = val.Trim(),
                                GenresSlug = val.MakeUrlFriendly2(),

                            };
                            db.Genres.Add(iTag);
                        }

                    GenresPost.Add(iTag);

                }
                post.Genres = GenresPost;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...