亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有兩個外鍵的代碼第一個表如果另一個有值,則一個應該為空

具有兩個外鍵的代碼第一個表如果另一個有值,則一個應該為空

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 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號