2010-02-26 95 views
0

我试图环绕实体框架4.这可能是一个简单的问题我的头;)实体框架与许多一对多删除

我有以下实体:文章,评论和图片。文章与评论具有一对多关联。文章也与图片有多对多的关系。

我的问题是什么才是删除有评论和图片的文章的正确方法。请注意,您有以下情况:

  1. 文章既没有评论,也没有图片关联。
  2. 文章有评论,但没有图片。
  3. 文章有评论和图片没有与其他文章共享。
  4. 文章有与其他文章共享的评论和图片。 (只有图片可以共享,评论是独家的)。

我已经注意到,刚刚执行:

_db.DeleteObject(art); 

不工作,我必须先删除评论和照片提前。此外,如果图片是共享的,我只想删除关联到特定的文章而不是所有的关联。

我敢肯定,有更简单的方法来实现这一点 - 是否有像“级联删除”,将照顾这种情况?

我感谢您的帮助!

回答

0

是的,有on delete cascade但不在实体框架中。但是,您可以将它们放在您的多对多链接表的外键上。

+4

在实体框架中有'删除级联':http://blogs.msdn.com/alexj/archive/2009/08/19/tip-33-how-cascade-delete-really-works-in- ef.aspx http://codepolice.net/2008/12/16/cascade-delete-in-entity-framework/ – LukLed 2010-02-26 18:15:12

+0

@LukeLed:引用链接:“如果你添加一个级联删除规则到模型,你必须有数据库中相应的DELETE规则。“,但好点。 – 2010-02-26 18:19:03

+1

这是因为在数据库中没有相应的规则的情况下,唯一可能的工作方式是运行一个大的错误(考虑未提交的数据)'DELETE FROM ... WHERE ID IN SELECT ....'语句,这看起来像一个奇怪的每个RDBMS都有一个更好的解决方案。 – 2010-02-26 18:21:48