Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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

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# EF4.1代码优先:如何对依赖实体中没有导航属性的关系禁用删除级联_C#_Entity Framework_Ef Code First_Foreign Keys_Cascading Deletes - Fatal编程技术网

C# EF4.1代码优先:如何对依赖实体中没有导航属性的关系禁用删除级联

C# EF4.1代码优先:如何对依赖实体中没有导航属性的关系禁用删除级联,c#,entity-framework,ef-code-first,foreign-keys,cascading-deletes,C#,Entity Framework,Ef Code First,Foreign Keys,Cascading Deletes,假设我有两个非常基本的实体: public class ParentEntity { public int Id; public virtual ICollection<ChildEntity> Childrens; } public class ChildEntity { public int Id; public int ParentEntityId; // Foreign Key public virtual ParentEntity paren

假设我有两个非常基本的实体:

public class ParentEntity
{
   public int Id;
   public virtual ICollection<ChildEntity> Childrens;
}

public class ChildEntity
{
   public int Id;
   public int ParentEntityId; // Foreign Key
   public virtual ParentEntity parent; // [NOTWANTED]
}

如何让它与fluent API一起工作?认为这应该是可能的。

您必须从关联的另一端配置它:

modelBuilder.Entity<ParentEntity>()
    .HasMany(p => p.Children)
    .WithRequired()
    .HasForeignKey(c => c.ParentEntityId)
    .WillCascadeOnDelete(false);
modelBuilder.Entity()
.HasMany(p=>p.Children)
.WithRequired()
.HasForeignKey(c=>c.ParentEntityId)
.WillCascadeOnDelete(假);

我必须将.WithRequired()更改为.WithRequired(c=>c.ParentEntity),如果您具有从子级到父级的导航属性,则可以在子映射中配置级联。您需要.hasOne(ParentEntity)
public int? ParentEntityId; // Foreign Key - nullable just to disable cascade on delete
modelBuilder.Entity<ParentEntity>()
    .HasMany(p => p.Children)
    .WithRequired()
    .HasForeignKey(c => c.ParentEntityId)
    .WillCascadeOnDelete(false);