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
。
更多信息:
有没有一种方法可以仅在我输入的值不为空时引用主键。比如外键不能为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
。
更多信息: