【问题标题】:Delete multiple Items from a List of Id's using Entity Framework使用实体框架从 ID 列表中删除多个项目
【发布时间】:2016-05-25 04:24:36
【问题描述】:

我需要从 ID 的列表中删除多个 ID。

public IHttpActionResult Delete(List<string> IDs)
{
    DealBazarEntities.Restaurants.RemoveRange(IDs);
    DealBazarEntities.SaveChanges();
}

但是RemoveRange 不允许有多个 id,它只需要List&lt;entities&gt;

是的,我知道,如果我将实体列表发送到服务器而不是发送 ID 列表,那么我可以轻松完成此操作。但我不喜欢那样。

再一次,我不想使用foreach 循环遍历每个 ID。

【问题讨论】:

  • DealBazarEntities.Restaurants.RemoveRange(DealBazarEntities.Restaurants.Where(r =&gt; IDs.Contains(r.ID)));
  • 哇...它的工作就像一个魅力....谢谢。你又节省了我很多时间。 :)

标签: c# asp.net-mvc entity-framework asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

根据Stephen Muecke的答案在问题的评论部分给出的答案,解决方案是:

DealBazarEntities.Restaurants.RemoveRange
(DealBazarEntities.Restaurants.Where(r => IDs.Contains(r.ID)));

【讨论】:

  • 好答案,但请注意,当我对此进行分析时,它执行了一个初始 SELECT,然后为每个匹配的 ID 单独的 DELETE 语句,而不是一个使用 IN 的 DELETE。所以它的效率并不高。
  • @JohnnyHK 我认为您可以在这种情况下从 EF 执行原始 sql 命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
相关资源
最近更新 更多