Code-first Entity Framework - несколько внешних ключей для одной и той же таблицы
У меня есть таблица Holiday
и таблица User
.
В таблице Holiday
есть столбцы RequesterID
и AuthorisedByID
, которые оба ссылаются на первичный ключ таблицы User
.
Это моя модель Holiday
:
public class Holiday
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid HolidayId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
public Guid RequesterId { get; set; }
public Guid? AuthorisedById { get; set; }
}
Я не могу объявить AuthorisedByID
в качестве внешнего ключа в таблице User так же, как я думаю, что сделал с столбцом RequesterID
.
Интересно, можете ли вы дать мне несколько советов о том, как разрешить.
Спасибо.
Ответы
Ответ 1
Код сначала не может сопоставлять свойства в двух классах самостоятельно.
Чтобы устранить эти проблемы, вы можете использовать аннотацию InverseProperty, чтобы указать выравнивание свойств.
[ForeignKey("RequesterUser")]
public Guid RequesterId { get; set; }
[ForeignKey("AuthorisedUser")]
public Guid AuthorisedById { get; set; }
[InverseProperty("RequesterHoliday")]
public virtual User RequesterUser{ get; set; }
[InverseProperty("AuthorisedHoliday")]
public virtual User AuthorisedUser{ get; set; }
public List<Holiday> RequesterHoliday { get; set; }
public List<Holiday> AuthorisedHoliday{ get; set; }