EF 6 - 级联删除一对多,无需反向引用

时间:2013-12-13 22:58:08

标签: .net entity-framework orm entity-framework-6 entity-framework-mapping

我有这样的事情:

public class Gadget {
  public int Id { get; set; }
  public string Name { get; set;}
  public int SuperHeroId { get; set; }
}

public class SuperHero {
  public int Id { get; set; }
  public virtual ICollection<Gadget> Gadgets { get; set; }
}

请注意,虽然Gadget是由超级英雄“拥有”(因此数据库中有FK),但我的域模型在该方向上没有硬引用。

当我删除超级英雄时,我还要删除所有小工具。我该怎么做?

我的研究表明,如果我有这个参考,那就像

mapping.Entity<SuperHero>()
  .HasMany(x => x.Gadgets)
  .WithRequired(x => x.SuperHero) //this is the part I can't do
  .WillCascadeOnDelete();

但如上所述,这不适用于我的域模型。

1 个答案:

答案 0 :(得分:13)

mapping.Entity<SuperHero>()   
       .HasMany(x => x.Gadgets)
       .WithRequired() //use the override that doesn't 
                       //specify a navigation property             
       .WillCascadeOnDelete();

http://msdn.microsoft.com/en-us/library/gg696502(v=vs.113).aspx

  

将关系配置为可选:不需要a   关系另一边的导航属性。