是否从LINQ DB删除也删除该有一个外键关联其他表的记录?
-
18-09-2019 - |
题
因此,在我的DB的根,我有一个表“客户”。客户有外键将约6-7其他表,如收据,地址,文档等等。如果我要删除使用的SubmitChanges客户(),是否会寻求与外键关联所有这些记录,并删除他们太多,或者我需要做像6个查询?
解决方案
如果您已经设置了数据库中的表与级联删除(即on delete cascade
)。
有关详细信息,请参阅插入,更新和删除操作(LINQ到SQL):
LINQ到SQL不支持或 识别级联删除操作。 如果你想在一个表中删除行 有反对的约束,你 必须要么设置ON DELETE CASCADE 在外键约束的规则 该数据库,或者使用自己的代码来 首先删除子对象 防止父对象被 删除。否则,一个例外是 抛出。
其他提示
你有什么样的级联作用的那些外键关系?
默认情况下,大多数数据库系统(包括SQL Server,这我相信你使用),不会有任何“ON DELETE CASCADE”或任何其他行动 - 所以在这种情况下,不会有事的。
这个T-SQL查询将显示您的外键关系以及任何删除或更新参照动作是否已经被定义为:
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文档的信息。
不隶属于 StackOverflow