具有两个外键的代码第一个表如果另一个有值,则一个应该为空

好吧,我正在尝试对我的表应用检查约束!所以我有国家代表,每个国家都应该有一个代表,一个Individual或一个,Organization但不是两者都有;


例如,如果 anIndividual代表国家,则OrganizationId应该是null。


我如何使用 Code First Data Annotations 或是否有任何其他方式应用此检查约束。


这是我的代码:


    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; }

}

我希望一切都清楚。谢谢小伙伴们


陪伴而非守候
浏览 149回答 1
1回答

牧羊人nacy

我会使用 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...
打开App,查看更多内容
随时随地看视频慕课网APP