EF 4.3.1 中可选关系的级联行为
本文关键字:关系 级联 EF | 更新日期: 2023-09-27 18:35:39
>我有一个从子类到父类的可选关系。如果父对象周围仍有子对象,我想在 SubmitChanges 上获得异常,如果该引用它周围仍有子对象。
我尝试的配置是这样的(没有从父级到子级的导航属性):
modelBuilder.Entity<Child>()
.HasOptional<Parent>(child => child.Parent)
.WithMany()
.HasForeignKey(child => child.ParentId)
.WillCascadeOnDelete(false);
像这样,EF 在删除父级时将孩子的 ParentId 属性设置为 null,这不是我想要的。
如果根据需要配置关系,则它有效:
modelBuilder.Entity<Child>()
.HasRequired<Parent>(child => child.Parent)
.WithMany()
.HasForeignKey(child => child.ParentId)
.WillCascadeOnDelete(false);
这将引发异常,这将是所需的行为。但这种关系必须是可选的。使用代码优先的 EF 4.3.1 是否可以执行此操作?
No.这就是可选和必需之间的区别。必需 = 必须具有主体记录,如果在不级联的情况下删除主体记录,则会出现异常。可选 = 不需要主体记录,如果删除主体记录而不级联,则 FK 设置为 null。
如果你需要其他任何东西,你必须自己处理。