Существуют ли соглашения об именах для нескольких обратных свойств в EF Core или необходимы атрибуты? - PullRequest
0 голосов
/ 27 апреля 2018

В этой статье показан следующий пример таблицы:

public class Course
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }
    public string Description { get; set; }

    [ForeignKey("OnlineTeacher")]
    public int? OnlineTeacherId { get; set; }
    public Teacher OnlineTeacher { get; set; }

    [ForeignKey("ClassRoomTeacher")]
    public int? ClassRoomTeacherId { get; set; }
    public Teacher ClassRoomTeacher { get; set; }
}

public class Teacher
{
    public int TeacherId { get; set; }
    public string Name { get; set; }

    [InverseProperty("OnlineTeacher")]
    public ICollection<Course> OnlineCourses { get; set; }
    [InverseProperty("ClassRoomTeacher")]
    public ICollection<Course> ClassRoomCourses { get; set; }
}

Я обнаружил, что могу удалить атрибуты [ForeignKey(*)], и они все еще создаются должным образом в таблице курсов. Однако, если я удаляю ОБА [InverseProperty] атрибуты, EF выдает ошибку при сборке. Существуют ли соглашения об именах для этого просто , как у внешних ключей ? Моя цель - строго следовать соглашениям об именах и уменьшить количество конфигураций на основе атрибутов / беглых слов.

1 Ответ

0 голосов
/ 27 апреля 2018

если я удаляю ОБА атрибуты [InverseProperty], EF выдает ошибку когда я строю. Существуют ли соглашения об именах для этого так же, как внешние ключи?

Существует соглашение об именовании , определенное EF, когда множество ассоциаций одного типа (например, 1-ко-многим) выходят между двумя объектами.

Например, когда у вас есть одна связь между EntityA и EntityB. Допустим, существует отношение 1 к * между EntityA и EntityB, оно хорошо работает, если вы соблюдаете соглашение. Но когда вы устанавливаете другое отношение «1 к *» между EntityA и EntityB, EF понадобится ваша помощь, чтобы узнать, как связаны ассоциации. Таким образом, вы должны использовать InverseProperty атрибут аннотации данных или определить полные отношения посредством быстрой конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...