在打卡时钟应用程序中,给定日期有两个外键进入打孔表:PunchId_In和PunchId_Out。您如何注释此关系,以便实体框架按预期创建它?注意:这些外键中的一个或两个可能未定义(null)。
public class Day
{
public int DayID { get; set; }
public int? PunchId_In { get; set; }
public int? PunchId_Out { get; set; }
public virtual Punch PunchIn { get; set; }
public virtual Punch PunchOut { get; set; }
}
public class Punch
{
public int PunchID { get; set; }
public DateTime PunchDT { get; set; }
}
TIA
答案 0 :(得分:0)
您可以考虑重新设计模型。
根据您分享的信息:您的模型假设您每天只进行一次打卡,并且不会跟踪谁打入或打出。
你可以有一个“拳击”列表
然后根据需要过滤列表
答案 1 :(得分:0)
您需要指明哪个外键与每个导航属性匹配。
public class Day
{
public int DayID { get; set; }
public int? PunchId_In { get; set; }
public int? PunchId_Out { get; set; }
[ForeignKey("PunchId_In")]
public virtual Punch PunchIn { get; set; }
[ForeignKey("PunchId_Out ")]
public virtual Punch PunchOut { get; set; }
}
https://msdn.microsoft.com/en-us/data/jj591583.aspx#Relationships