我有一个使用Entity Framework 6.2.0的 数据库优先 模型,该模型具有以下关联:
如您所见,两端的OnDelete属性设置为None
。 SQL Server中的对应关系如下所示:
虽然没有显式设置在删除时设置null,但是当我尝试从Plannings(主表)中删除对象时,EF会将表Waybill中的所有外键记录设置为null。
所有情况都与之前相同。但在这种情况下,当我尝试从Products中删除一个对象时,它会因为与外键约束冲突而失败(正如我所料)。
为什么这两个相似的案例有不同的行为?如何在 数据库优先 模型中完全禁用删除时设置null?我知道在 代码优先 模型中,我们可以使用以下内容删除约定:
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
但我在 数据库优先 中找不到任何方法。