我使用實體框架與.NET 4.0和SQL Server 2008刪除父FK約束的實體在實體框架與SQL Server的
我有兩個實體A
和B
,A
有許多B
的(有a
字段B
表,即B
→多對一→A
)。當我嘗試刪除特定父實體A
時,查詢失敗
A是父實體,B是子實體。
下面是我用一個特定A
實體刪除代碼: -
var obj = (from A in context.As where A.id=someValue select A).First();
context.As.DeleteObject(obj);
context.SaveChanges();
但是它拋出著名的例外
DELETE語句衝突與基準約束「FK_bs_as」 。數據庫「myDb」,表「dbo.bs」,列「a」發生衝突。
該聲明已終止。
然後我看了看使用SQL Server Management Studio中的外鍵約束和編輯FK如下:
- 刪除規則:級聯
- 更新規則:級聯
- 強制執行外鍵約束:否
並試圖將FK設置爲ON DELETE CASCADE
。但顯然還是有問題的。
我不想獲取父實體(A
)的每個該死的子實體(B
)並單獨刪除它們。與執行單個SQL查詢相比,這太昂貴了。
那沒用。我按照你所說的改變了FK,並更新了'.edmx'文件中的刪除規則,如下所示:End1 B(1),End1 onDelete:cascade; End2:A(*),End2 onDelete:無。它不起作用。我不能在end2(A)上放置級聯,它會拋出錯誤。 –