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

时间:2013-11-08 17:23:21

标签: 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; }
}

我无法将AuthorisedByID声明为User表中的外键,就像我认为我使用RequesterId列一样。

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

感谢。

1 个答案:

答案 0 :(得分: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; }