实体框架多对多关系保存问题

时间:2015-03-30 06:16:03

标签: entity-framework

我首先使用实体​​框架6.2代码。 并有一些实体。我有两个与n到n关系的实体。 书和流派

public class Book
{
   public int BookId { get; set; }
    public string Title { get; set; }
    public double Price { get; set; }
    public virtual ICollection<Genre> Genres { get; set; }
    public virtual ICollection<Author> Authors { get; set; }
}

public class Genre
{
    public int GenreId { get; set; }
    public string Name { get; set; }
    [JsonIgnore]
    public virtual ICollection<Book> Books { get; set; }

}

问题是,在新书的实例中,我有一些类型, 然后,当我保存书籍时,新的流派实例也会保存。

编辑:正如我之前所说,我可以用这种方式保存book.let解释。我已经在“Genre”表中创建了一个名为“Drama”的记录,现在我创建了一本新剧集“Drama”赋予它。“Book”实体的“Genres”集合现在有“Drama”项目。但是当我保存书籍时,我在“流派”表中有了“戏剧”标题的新记录。现在我在“Genre”表中有重复记录,每次创建新书时,都会创建新的类型。

1 个答案:

答案 0 :(得分:1)

首先将现有的Genre附加到Context,然后将Genre添加到Book。

using (var context = new MyContext())
{
    var genre= new Genre() { Genre= 15 };
    context.Genres.Attach(genre);

    var book= new Book();
    book.Genres.Add(genre);

    context.Books.Add(book);

    context.SaveChanges();
}

Look at this post Many to Many Relationships not saving