c#MVC5如果value不为null,则引用Table

时间:2015-12-05 21:20:44

标签: c# entity-framework ef-code-first foreign-keys foreign-key-relationship

只有在我输入的值不为空时才能引用主键。例如,外键不能为空,但我希望在输入值时对字段有外键约束,并允许为空。

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是可选的,当输入时它会引用会员。

1 个答案:

答案 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

了解更多信息: