РЕДАКТИРОВАТЬ: Это происходит только в крупномасштабных проектах с репозиториями. Кто-нибудь использует EF4 с подходом CodeFirst и использует репозитории? Пожалуйста, посоветуйте мне.
Привет. В настоящее время я работаю с классами EF4 CodeFirst. В моем тестовом проекте у меня было два класса: Автор и Книга (автор получил книги). Что я пытаюсь сделать, так это то, что у меня есть AddBook в моем классе Author, но это не работает, как будто я не могу добавить его в коллекцию ... вот мои классы и два разных исключения.
public class Book
{
public virtual int BookId { get; set; }
public virtual string Title { get; set; }
public virtual Author Author { get; set; }
}
public class Author
{
public virtual int AuthorId { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Book> Books { get; set; }
public Author()
{
Books = new Collection<Book>();
}
public void AddBook(Book book)
{
book.Author = this;
Books.Add(book);
}
}
исключение: Недвижимость 'Книги' экземпляр объекта.
не может быть установлен, потому что коллекция уже установлено значение EntityCollection.
И это вполне естественно, что я получаю это исключение, потому что для Collection не установлено новое значение, но затем я получаю это первое исключение. Итак, как это делается с помощью кода сначала в EF?
может быть, я должен добавить, что мой Он может столкнуться с моим DbSet?
public class EntityContext : DbContext, IUnitOfWork
{
public DbSet<Author> Authors { get; set; }
public DbSet<Book> Books { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.IncludeMetadataInDatabase = false;
}
public void Save()
{
SaveChanges();
}
}