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