只有在我输入的值不为空时才能引用主键。例如,外键不能为空,但我希望在输入值时对字段有外键约束,并允许为空。
public class Team
{
[Key]
public int Id { get; set; }
public bool AllowComments { get; set; }
[ForeignKey("Member")]
public int Captain { get; set; }
[ForeignKey("Member")]
public int? CoCaptain { get; set; }
public virtual Member Member { get; set; }
}
通过上面的设置,我只能在输入CoCaptain时创建一条记录,但是我希望CoCaptain是可选的,当输入时它会引用会员。
答案 0 :(得分:1)
如果我理解你的问题,你需要这张表:
- Id (PK, int, not null)
- AllowComments (bit, not null)
- Captain (FK, int, not null)
- CoCaption (FK, int, null)
因为您有2个外键属性,所以您还需要2个导航属性。
因此,创建2个导航属性并更正外键属性,然后您可以使用int
Caption
使其not null
并使用int?
CoCaption
允许null
和
public class Team
{
[Key]
public int Id { get; set; }
public bool AllowComments { get; set; }
[ForeignKey("Member")]
public int Captain { get; set; }
[ForeignKey("CoMember")]
public int? CoCaptain { get; set; }
public virtual Member Member { get; set; }
public virtual Member CoMember { get; set; }
}
如果您只需要一个外键列,则您应该只有一个导航属性。并且使用int?
作为外键属性,使其在数据库中允许null
。
了解更多信息: