EF 6 - Каскад Удалить одно на многих без обратной ссылки

.net entity-framework entity-framework-6 entity-framework-mapping orm

Вопрос

У меня есть что-то вроде этого:

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), моя модель домена не имеет жесткой ссылки в этом направлении.

Когда я удаляю супергероя, я хотел бы также удалить все свои гаджеты. Как мне это сделать?

Мои исследования показывают, что если бы у меня была эта ссылка, это было бы чем-то вроде

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

но, как отмечено, это не работает с моей моделью домена.

Принятый ответ

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

Настраивает связь как необязательную: требуется без свойства навигации на другой стороне отношения.




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему