如何使用Entity Framework ASP.Net MVC 5删除多个记录?

Ben*_*lda 28 c# entity-framework asp.net-mvc-5

我有如下图所示的表格:

在此输入图像描述

如何使用基于ProjectId的Entity FrameWork删除表的所有记录?

Meh*_*lal 75

这个班轮将做到这一点:

  db.ProRel.RemoveRange(db.ProRel.Where(c => c.ProjectId == Project_id));
Run Code Online (Sandbox Code Playgroud)

  • 很棒,非常简单和完美的答案非常感谢它完美地工作 (2认同)
  • 简单优雅的解决方案,谢谢! (2认同)
  • @AtulChaudhary说了什么。RemoveRange不需要IQueriable,因此它所做的就是向客户端检索要删除的所有数据,然后进行枚举。真正需要的是一种将条件传递给数据库的方法,该条件定义了要删除的内容并由数据库完成,而不会无意义地将所有数据复制到客户端。 (2认同)
  • 优雅的解决方案,谢谢 (2认同)

Jes*_*ter 15

context.Projects.Where(p => p.ProjectId == projectId)
               .ToList().ForEach(p => context.Projects.Remove(p));
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

取自这个非常相似的帖子(应该标记为重复).


bea*_*der 6

你可以使用DbSet.RemoveRange()并传入IEnumerable<Model>.

您使用数据上下文构建模型列表ProjectId并将其传递给它们RemoveRange().最后,打电话SaveChanges().