代码优先实体框架 - 同一个表的多个外键

t_p*_*lus 6 entity-framework ef-code-first ef-migrations

我有一张Holiday桌子和一张User桌子.

Holiday表具有列RequesterIDAuthorisedByID,其中两个链接的主键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; }
}
Run Code Online (Sandbox Code Playgroud)

我无法AuthorisedByID在User表中声明为外键,就像我认为我对RequesterId列一样.

我想知道你是否可以给我一些如何解决的提示.

谢谢.

Ily*_*lya 9

代码优先不能自己匹配两个类中的属性.

要解决这些问题,可以使用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; }
Run Code Online (Sandbox Code Playgroud)