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; }