我首先使用实体框架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”表中有重复记录,每次创建新书时,都会创建新的类型。
答案 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();
}