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 是否可以执行此操作?

EF 4.3.1 中可选关系的级联行为

No.这就是可选和必需之间的区别。必需 = 必须具有主体记录,如果在不级联的情况下删除主体记录,则会出现异常。可选 = 不需要主体记录,如果删除主体记录而不级联,则 FK 设置为 null。

如果你需要其他任何东西,你必须自己处理。