c# MVC5 引用 Table 如果值不为空

c# MVC5 Referencing Table if value is not null

有没有一种方法可以仅在我输入的值不为空时引用主键。比如外键不能为null,但是我希望在输入值的时候对一个字段进行外键约束,允许为null。

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 是可选的,并且在输入时它会引用 Member。

如果我正确理解你的问题并且你需要这个table:

 - Id (PK, int, not null) 
 - AllowComments (bit, not null)
 - Captain (FK, int, not null)
 - CoCaption (FK, int, null)

因为您有 2 个外键属性,所以您也需要有 2 个导航属性。

因此,创建 2 个导航属性并更正外键属性,然后您可以使用 int for Caption 使其成为 not null 并使用 int? for 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

更多信息: