簡體   English   中英

Linq to SQL:刪除多對多關系時出錯

[英]Linq to SQL: Error deleting many to many relationship

首先,讓我們從錯誤開始:

“試圖刪除X和Y之間的關系。但是,其中一個關系的外鍵不能設置為null”

現在解釋我想要做什么......

我有以下數據庫表:標本,男性,女性,標本關系。 男性總是標本,女性總是標本。 因此,樣本具有兩個一對多的關系(但邏輯可以防止樣本同時設置)。 另外,一個男性可以有一對多的女朋友,同樣一個女性可以有一對多的男朋友(嘿,這畢竟是21世紀)。 這已通過創建多對多表(SpecimenRelationship)來解決。

設置SQL中的關系,以便標本刪除級聯到Male和Female。 之后,所需的功能是刪除男性/女性以級聯到SpecimenRelationship - 但由於SQL限制(多循環路徑垃圾!),這沒有完成。 所以一個級聯,另一個是SetNull(假設男性是SetNull)。

現在,這一切都出錯了。 當我從Male實體中刪除SpecimenRelationship時,我得到上面的錯誤。 但為什么會這樣呢? 我沒有看到我甚至刪除了Male實體,我不明白Linq-to-Sql是如何工作的,為什么這不只是直接刪除SpecimenRelationship條目?

這是一些示例代碼:

Male male = GetMaleFromDataContext();

SpecimenRelationship relationshipToRemove = male.SpecimenRelationships.Single(x => x.FemaleID == someFemaleID);

male.SpecimenRelationships.Remove(relationshipToRemove);

DB.SubmitChanges();//error thrown here

為什么關系級聯在這里發揮作用?

在表上創建關系時,外鍵列的NULL約束將自動設置為NOT NULL。

你需要將它設置為NULL,你的級聯規則將起作用(我認為)。

設計模式(Management Studio)中的屬性名稱為Allow Nulls。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM