Я создал Entity Model с базой данных First в моем проекте. В моей базе данных у меня есть две таблицы. Один для книг и один для автора. Книги имеют внешний ключ на авторском праве. И каждый раз, когда я хочу добавить новую книгу, я добавляю нового автора, даже если указанный автор уже существует или я получил ошибку.
Это мои занятия:
Книга
public partial class BOOK
{
public int ID { get; set; }
public string TITLE { get; set; }
public int PAGENUMBER { get; set; }
public int AUTHOR { get; set; }
public virtual AUTHOR AUTHOR1 { get; set; }
}
Автор
public partial class AUTHOR
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public AUTHOR()
{
this.BOOK = new HashSet<BOOK>();
}
public int ID { get; set; }
public string FIRSTNAME{ get; set; }
public string LASTNAME{ get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<BOOK> BOOK { get; set; }
}
Я пытался несколькими способами просто добавить книгу, и при создании я указал автора или добавил новую книгу в список авторов. В большинстве случаев это приводит к ошибке, и автор впервые добавляется в таблицу автора во второй раз. Может быть, я упускаю что-то очевидное или не знаю определенного метода, потому что я абсолютный новичок в Entity Framework.
РЕДАКТИРОВАТЬ: Я всегда пытался получить автора через запрос на выборку и передайте его в книгу как объект.
var functions= new DbFunctions();
var author = functions.SelectAuthor(8); //Select with the ID
var book = new BOOK()
{
AUTHOR1 = author,
TITLE= "ABC",
PAGENUMBER = 30,
};
var context = new EF6_DbFirst_DatabaseEntities();
context.BOOK.Add(book);
context.SaveChanges();
, который возвращает эту ошибку: System.InvalidOperationException: 'На объект сущности нельзя ссылаться несколькими экземплярами IEntityChangeTracker.'