【问题标题】:EF 6 - Cascade Delete on one to many without backreferenceEF 6 - 一对多的级联删除,没有反向引用
【发布时间】:2013-12-14 21:42:53
【问题描述】:

我有这样的事情:

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

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

当我删除一个超级英雄时,我还想删除他们的所有小工具。我该怎么做?

我的研究表明,如果我有那个参考,它会是这样的

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

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

【问题讨论】:

  • 不能创建硬引用吗?
  • 否 - 在我的情况下,那将是糟糕的设计。

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


【解决方案1】:
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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2011-08-22
    • 2011-11-04
    • 2015-03-24
    相关资源
    最近更新 更多