好吧,我正在尝试对我的表应用检查约束!因此,我有一个国家代表,每个国家都应有一个Individual
或Organization
但不是两个都有一个代表;
例如,如果Individual
代表国家,则OrganizationId
应该是null
。
如何使用代码优先数据注释或如果有其他方法来应用此检查约束。
这是我的代码:
class CountryRepresentative
{
[Column(Order = 0), Key, ForeignKey("Incident")]
public Guid CountryId { get; set; }
[Column(Order = 1), ForeignKey("Organization")]
public int OrganizationId { get; set; }
[Column(Order = 2), ForeignKey("Individual")]
public int IndividualId { get; set; }
public virtual Organization Organization { get; set; }
public virtual Individual Individual { get; set; }
public virtual Incident Incident { get; set; }
}
我希望一切都清楚。 谢谢队友
答案 0 :(得分:0)
我将使用Fluent API手动定义约束:
migrationBuilder.Sql("ADD CONSTRAINT CK_ONLY_ONE_VAL CHECK
((nullif(one,'') is null or nullif(other,'') is null)
and not (nullif(one,'') is null and nullif(other,'') is null) );");
nullif()
将有助于检查空值并将其转换为null
...