为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
陪伴而非守候 2022-06-19 16:53:03
好吧,我正在尝试对我的表应用检查约束!所以我有国家代表,每个国家都应该有一个代表,一个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; }}我希望一切都清楚。谢谢小伙伴们
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

我会使用 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...


查看完整回答
反对 回复 2022-06-19
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号