外键的DELETE CASCADE选项是否删除孙子?

时间:2013-04-15 14:05:17

标签: sql entity-framework entity-framework-5 fluent-interface

SQL级联删除相当新。我想知道当孩子们来时级联删除是如何工作的。所以说我有一个表格情况如下:

  

ParentTable == Cascade ==> ChildTable == NoCascade ==>的 GrandChildTable

孙子也会被删除吗?我是否需要在子选项卡中指定关闭级联删除?我正在使用Fluent API将父ParentTable的级联删除设置为带有WillCascadeOnDelete(true)的ChildTable,如果我在ChildTable上设置WillCascadeOnDelete(false),这是必要的吗?我无法删除GrandChildTable的原因是因为它是一个域表。

谢谢, 马特

1 个答案:

答案 0 :(得分:0)

  

孙子也会被删除吗?

不,如果您的数据库系统没有完全错误,或者说不完全实现(并且这与实体框架没有太大关系),请不要这样做。如果可能,那么您可以根据这些外键约束的意图轻松破坏数据完整性。

如果您希望在删除子项时删除孙子,则需要对从ChildTable到GrandChildTable的FK关系添加额外的DELETE CASCADE约束。如果对子进程的DELETE操作来自该子进程的显式DELETE,或来自父进程的级联删除,则无关紧要。

相关问题