0

我有一个从子类到父类的可选关系。当父对象被标记为删除时,如果该引用周围仍有子对象,我想在 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);

这会引发异常,这将是所需的行为。但这种关系必须是可选的。使用 Code First 的 EF 4.3.1 是否可以做到这一点?

4

1 回答 1

1

不,这是可选和必需之间的区别。必需 = 必须有一个主体记录,如果您在没有级联的情况下删除主体记录,则会出现异常。可选 = 不需要主体记录,如果您删除主体记录而不进行级联,则 FK 设置为空。

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

于 2012-05-29T10:05:37.403 回答