如何从数据库中删除多对多属性

时间:2018-11-04 16:58:10

标签: c# asp.net asp.net-mvc

我在DB中有2个表之间的多对多关系。我首先从Db使用EF代码。

流派

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并在其他帖子中再次添加它时,我想检查它是否存在我不需要再次添加它..这是我的代码,但是对我来说不起作用:

  

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;
            }

0 个答案:

没有答案