[英]Does deleting from a LINQ DB also delete records in other tables that have a foreign key association?
因此,在數據庫的根目錄下,有一個“客戶”表。 客戶的外鍵將進入約6-7個其他表,例如收據,地址,文檔等。如果我要使用SubmitChanges()刪除客戶,是否會使用外鍵關聯來查找所有這些記錄並刪除它們,還是我需要做6個查詢?
僅當您設置數據庫表來執行級聯刪除操作時(例如, on delete cascade
),才會發生這種情況。
有關更多信息,請參見插入,更新和刪除操作(LINQ to SQL) :
LINQ to SQL不支持或識別級聯刪除操作。 如果要刪除具有約束的表中的行,則必須在數據庫的外鍵約束中設置ON DELETE CASCADE規則,或使用自己的代碼首先刪除阻止父級的子對象對象被刪除。 否則,將引發異常。
您對那些外鍵關系有什么樣的級聯作用?
默認情況下,大多數數據庫系統(包括我認為您使用的SQL Server)將沒有任何“ ON DELETE CASCADE”或任何其他操作-因此在這種情況下,將不會發生任何事情。
此T-SQL查詢將向您顯示您的外鍵關系以及是否已定義任何DELETE或UPDATE引用操作:
SELECT
name 'FK Constraint',
OBJECT_NAME(parent_object_id) 'Parent table',
OBJECT_NAME(referenced_object_id) 'Referenced table',
delete_referential_action ,
delete_referential_action_desc ,
update_referential_action ,
update_referential_action_desc
FROM
sys.foreign_keys
如果希望發生某些事情,則需要確保將那些FK關系設置為使用這些級聯操作。
有關更多詳細信息,請參見有關級聯引用完整性約束的MSDN文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.