删除多对多关系中的实体

时间:2014-06-02 11:56:08

标签: c# entity-framework

我有以下EF 6.1实体:

public class Post {
  public Int32 Id { get; set; }
  public virtual ICollection<PostLocalized> PostsLocalized { get; set; }
}

public class PostLocalized {
  public Int32 Id { get; set; }
  public String Culture { get; set; }
  public virtual Post Post { get; set; }
  public virtual ICollection<Pack> Packs { get; set; }
}

public class Pack {
  public Int32 Id { get; set; }
  public virtual ICollection<File> Files { get; set; }
}

public class File {
  public Int32 Id { get; set; }
  public virtual Pack Pack { get; set; }
}

所以在SQL中我有以下表格,Cascade on Delete:

Post, PostLocalizaded, PostLocalized_Packs, Packs, Packs_Files, Files

注意:PostLocalized_Packs和Packs_Files是多对多关系表。

当我删除帖子时,其PostLocalized记录被删除,PostLocalized_Packs被删除。

但Packs,Packs_Files和Files不是...... 我知道Packs_Files会在我删除Packs时被删除。

问题

如果Post及其PostLocalized删除所有与之关联的PAcks和文件而不加载所有内容,特别是文件,我该怎么办呢。

谢谢你, 米格尔

1 个答案:

答案 0 :(得分:0)

不是一个答案,也不是一个评论,但......

你说如果删除Pack,那么Pack_Files和Files也会被删除,因为级联删除。

考虑这个例子:

删除帖子 - &gt;删除与帖子相关的所有PostLocalized和PostLocalized_Pack

这也应该删除与PostLocalized_Packs相关的包,对吧?它确实如此,你有从包中删除级联 - &gt; PostLocalized_Packs。然后它将开始删除与通过级联删除删除的包相关的所有PostLocalized_Pack。

然后它会发布与PostLocalized_Packs相关的帖子,这些帖子是从Packs端的级联删除中删除的。

如果删除帖子也应该删除所有包,那么你的模型是否正确建模?