c# 里 給類型后面加個? 問號 代表 他是 可空的(nullable<T>)
通常 ef core 里面 關聯外鍵的時候 用 guid 或者 long ,這些都是有默認值的 guid 的默認值是 (00000000-0000-0000-0000-000000000000) long 默認值是 0 ,
但是如果 給 guid? 或者 long? 那么 在 數據庫里面 他們也表示 為 null 了 ,就不會有默認值
默認值 會 影響 數據 的寫入
如果 不給 guid 加問號 ,你不傳這個guid ,他最后 寫入數據庫的時候 就會 給默認值 00000000-0000-0000-0000-000000000000 從而 會 報
MessageText: 插入或更新表 "Sn_ConstructionBase_SubItemContent" 違反外鍵約束 "ForeignKey_SubItem_SubItemContent" Detail: 鍵值對(SubItemId)=(00000000-0000-0000-0000-000000000000)沒有在表"Sn_ConstructionBase_SubItem"中出現.
就是因為 數據庫里面 外鍵表 的數據 沒有 00000000-0000-0000-0000-000000000000 這個數據
解決方法 就是 在 entity 里面定義 外鍵guid 的時候 寫 guid? 加個問號
同樣 在 createDto 或者 UpdateDto 里面 傳入插入的外鍵的時候 也要給 guid?
並且在 dto 展示的時候 有guid 類型 的話 給 guid?
這樣 插入 更新 的時候 就不會報 違反外鍵約束 的錯啦 ~