WillCascadeOnDelete在实体框架中如何工作?

时间:2013-07-29 19:37:34

标签: entity-framework cascade

据我所知,如果删除父行,如果我在删除时打开cascade,则应删除其子项。但是,根据我的测试,它似乎根本不起作用。无论我将WillCascaseOnDelete设置为true还是false,它只是将其子项的外键设置为null。这导致另一个问题,我必须将外键设置为可空,否则,SaveChange将抛出异常。这是缺陷还是期望的行为?

2 个答案:

答案 0 :(得分:11)

这是因为您的外键(子)可以为空。默认情况下,删除父级时,如果关系上的外键可以为空,则EF将删除父级并将外键设置为null。如果外键是NOT NULL,它将删除子项(您正在寻找的行为?)。

您可以更改此默认行为here

答案 1 :(得分:0)

确保在SQL Server的“外键关系”窗口中,已选择“Cascade as Delete rule”。