使用Linq to Entity删除多行的有效方法?

时间:2011-05-19 14:26:31

标签: c# linq-to-entities

您好我正在寻找一次删除多个记录的有效方法。我正在删除400条记录,需要8-15秒。这是我的代码

using (var entities = new Entity())
   {                               
       foreach (Item item in entities.Items.Where(x => x.id == id))
              entities.DeleteObject(item);
       entities.SaveChanges();
   }

3 个答案:

答案 0 :(得分:3)

您可以使用EntityFramework.Extensions更快地完成此操作 1)首先使用NuGet

安装EntityFramework.Extensions

2)这是类似于Linq2Sql的DeleteAllOnSubmit()的代码:

using EntityFramework.Extensions;

...

using (var entities = new Entity())
{                               
    entities.Items.Delete(x => x.id == id);
    entities.SaveChanges();
}

...

答案 1 :(得分:1)

如果您只能在一个批次中进行删除,请查看Bulk-deleting in LINQ to EntitiesPLINQO for Entity Framework,即

DELETE FROM Entities WHERE [some condition]

否则,可能会检查您在x列上找到每个记录的索引。

答案 2 :(得分:1)

在你的循环中:

using (var entities = new Entity()) 
{                                
    foreach (Item item in entities.Items.Where(x => x.id == id)) 
           entities.DeleteObject(item); 
    entities.SaveChanges(); 
} 

如果你移动entities.SaveChanges();所以它在循环之后运行,它将以更快的速度运行。

using (var entities = new Entity()) 
{                                
    foreach (Item item in entities.Items.Where(x => x.id == id)) 
          entities.DeleteObject(item); 
} 
entities.SaveChanges();