繁体   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