Код Первое добавление в коллекции? Как использовать Code First с репозиториями?

РЕДАКТИРОВАТЬ: Это происходит только в крупномасштабных проектах с репозиториями. Кто-нибудь использует 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();
    }
}
14
задан MatthewMartin 31 December 2014 в 20:54
поделиться