使用实体框架从 ID 列表中删除多个项目
Posted
技术标签:
【中文标题】使用实体框架从 ID 列表中删除多个项目【英文标题】:Delete multiple Items from a List of Id's using Entity Framework 【发布时间】:2016-05-25 04:24:36 【问题描述】:我需要从 ID 的列表中删除多个 ID。
public IHttpActionResult Delete(List<string> IDs)
DealBazarEntities.Restaurants.RemoveRange(IDs);
DealBazarEntities.SaveChanges();
但是RemoveRange
不允许有多个 id,它只需要List<entities>
。
是的,我知道,如果我将实体列表发送到服务器而不是发送 ID 列表,那么我可以轻松完成此操作。但我不喜欢那样。
再一次,我不想使用foreach
循环遍历每个 ID。
【问题讨论】:
DealBazarEntities.Restaurants.RemoveRange(DealBazarEntities.Restaurants.Where(r => IDs.Contains(r.ID)));
哇...它的工作就像一个魅力....谢谢。你又节省了我很多时间。 :)
【参考方案1】:
根据Stephen Muecke
的答案在问题的评论部分给出的答案,解决方案是:
DealBazarEntities.Restaurants.RemoveRange
(DealBazarEntities.Restaurants.Where(r => IDs.Contains(r.ID)));
【讨论】:
好答案,但请注意,当我对此进行分析时,它执行了一个初始 SELECT,然后为每个匹配的 ID 单独的 DELETE 语句,而不是一个使用 IN 的 DELETE。所以它的效率并不高。 @JohnnyHK 我认为您可以在这种情况下从 EF 执行原始 sql 命令。以上是关于使用实体框架从 ID 列表中删除多个项目的主要内容,如果未能解决你的问题,请参考以下文章