Как создать отношение «один ко многим» в Entity Framework 4.1 с использованием Code First и аннотаций данных? - PullRequest
3 голосов
/ 22 мая 2011

Я борюсь за создание простого отношения один ко многим, используя Code First в EF. Я хочу, чтобы он сгенерировал базу данных для меня, но не мог понять, как написать эти классы, чтобы он его создал.

У меня есть эти классы:

public class Book
{
    public int ID { get; set; }
    public string Author { get; set; }
    public ICollection<Page> Pages { get; set; }
}

public class Page
{   [Key]
    public int BookID { get; set; }

    public  Book Book { get; set; }

    public string OtherField { get; set; }
}

Но я получаю сообщение об ошибке при создании базы данных:

Невозможно определить основной конец ассоциации между типами 'MvcApplication1.Models.Page' и 'MvcApplication1.Models.Book'. Основной конец этой ассоциации должен быть явно сконфигурирован с использованием либо API свободного взаимодействия, либо аннотаций данных

Я просто хочу сгенерировать две простые таблицы: «Книга» с ID в качестве первичного ключа и Страница с BookID в качестве первичного и внешнего ключа. Это действительно должно быть просто, но я просто не могу понять это.

1 Ответ

3 голосов
/ 22 мая 2011

Но это не отношения один ко многим.Это отношение один к одному, которое говорит, что каждая книга имеет ровно одну страницу.Ошибка говорит о том, что она не может определить, является ли книга или страница главными в отношении «один к одному».

Вы должны изменить свои объекты следующим образом:

public class Book
{
    public int ID { get; set; }
    public string Author { get; set; }
    public virtual ICollection<Page> Pages { get; set; }
}

public class Page
{   
    public int ID { get; set; }
    public int BookID { get; set; }
    public virtual Book Book { get; set; }
    public string OtherField { get; set; }
}
...