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

new*_*man 16 entity-framework cascade

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

Mat*_*ton 10

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

您可以在此处更改此默认行为

  • 我遇到了同样的问题,我的外键被设置为`IsRequired();`,关系有`.WillCascadeOnDelete(true)`但是在尝试删除父对象时我仍然得到一个异常. (3认同)
  • @weenoid感谢您的回复.但是,那么删除子对象而不是在非可空字段中设置NULL值会更有意义吗?只是我的两分钱. (3认同)