Разница в применении атрибутов [InverseProperty] и [ForeignKey]

156
24 марта 2018, 13:39

Обьясните, пожалуйста, максимально простыми словами, в чем же разница между [InverseProperty] и [ForeignKey], ведь оба атрибута устанавливают однозначную связь между сущностями Entity FW. Так когда лучше использовать первый, а когда второй атрибут?

Answer 1

ForeignKey - используются когда две сущности имеют одну связь. [InverseProperty] - когда таких связей несколько, думаю не так уж часто такое происходит, но к примеру в документации рассматривается ситуация связи сущностей Учитель - Курс. Конкретно там появляется две таблицы одинаковых сущностей - онлайн курсы и курсы в классе. Возникает такая ситуация. На мой взгляд она несколько надуманная, ну да ладно.

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; }
}
READ ALSO
Как считать данные из адресной строки браузера на с#?

Как считать данные из адресной строки браузера на с#?

Всем приветСтоит задача получить название вводимого адреса сайта в адресную строку браузера

188
EPPlus портит даты

EPPlus портит даты

В общем, читаю Excel, где есть колонки с датой

180
Передача контекста базы данных

Передача контекста базы данных

Начал изучать юнит-тестыВозникла проблема

197
Парсинг текста из файла в форму

Парсинг текста из файла в форму

Делаю программу для парсинга текста из файловПрограмма для анкетирования

173