我有从Child到Parent类的可选关系。如果父对象被标记为删除,我希望在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吗?
答案 0 :(得分:1)
没有。这是可选和必需之间的区别。必需=必须具有主记录,如果删除主记录而没有级联,则会出现异常。 Optional =不需要主记录,如果删除没有级联的主记录,则FK设置为null。
如果您还需要其他任何东西,您必须自己处理。