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

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

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

出于某些原因,我不希望ChildEntity将引用保留回其父级。 我只是希望它保留ParentEntity id,但仅此而已。 到目前为止,没问题,我只是删除[NOTWANTED]行,一切都按预期工作。

我的问题是:如何在特定情况下禁用级联删除?

如果我仍然拥有父导航属性,那将很容易:

 modelBuilder.Entity() .HasRequired(c => c.parent) .WithMany(p => p.Childrens) .WillCascadeOndelete(false) 

但是如果没有导航属性,我根本不知道如何在删除时禁用级联(当然不是全局禁用它,也不是每个表禁用它,而只是为了关系)。

我现在所做的是将外键设置为可以为空的int,以便在删除时禁用级联,但这并不漂亮:

 public int? ParentEntityId; // Foreign Key - nullable just to disable cascade on delete 

如何才能使用流畅的API? 认为它应该是可能的。

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

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