Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF 4.3.1中可选关系的级联行为_C#_Entity Framework_Ef Code First - Fatal编程技术网

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

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

我有一个从子类到父类的可选关系。如果父对象周围仍然有子对象引用它,则当父对象被标记为删除时,我希望在SubmitChanges上得到一个异常

我尝试的配置如下(从父级到子级没有导航属性):

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);