C# EF 4.3.1中可选关系的级联行为
我有一个从子类到父类的可选关系。如果父对象周围仍然有子对象引用它,则当父对象被标记为删除时,我希望在SubmitChanges上得到一个异常 我尝试的配置如下(从父级到子级没有导航属性):C# EF 4.3.1中可选关系的级联行为,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我有一个从子类到父类的可选关系。如果父对象周围仍然有子对象引用它,则当父对象被标记为删除时,我希望在SubmitChanges上得到一个异常 我尝试的配置如下(从父级到子级没有导航属性): modelBuilder.Entity() .has可选(child=>child.Parent) .有很多 .HasForeignKey(child=>child.ParentId) .WillCascadeOnDelete(假); 像这样,在删除父对象时,EF会将子对象的ParentId属性设置为nul
modelBuilder.Entity()
.has可选(child=>child.Parent)
.有很多
.HasForeignKey(child=>child.ParentId)
.WillCascadeOnDelete(假);
像这样,在删除父对象时,EF会将子对象的ParentId属性设置为null,这不是我想要的
如果按要求配置关系,则此功能有效:
modelBuilder.Entity<Child>()
.HasRequired<Parent>(child => child.Parent)
.WithMany()
.HasForeignKey(child => child.ParentId)
.WillCascadeOnDelete(false);
modelBuilder.Entity()
.HasRequired(child=>child.Parent)
.有很多
.HasForeignKey(child=>child.ParentId)
.WillCascadeOnDelete(假);
这将引发一个异常,这将是所需的行为。但这种关系必须是可选的。EF 4.3.1是否可以先使用代码?否。这是可选和必需的区别。Required=必须有一个主体记录,如果删除主体记录而不进行级联,则会出现异常。可选=不需要主体记录,如果删除主体记录而不级联,则FK设置为null
如果您还需要什么,您必须自己处理。这不是我所希望的答案,但还行。我已将关系更改为required,并使用最初设置的Null对象,而不是Null。
modelBuilder.Entity<Child>()
.HasRequired<Parent>(child => child.Parent)
.WithMany()
.HasForeignKey(child => child.ParentId)
.WillCascadeOnDelete(false);