簡體   English   中英

從LINQ DB中刪除是否還會刪除其他具有外鍵關聯的表中的記錄?

[英]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.

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