您好我正在寻找一次删除多个记录的有效方法。我正在删除400条记录,需要8-15秒。这是我的代码
using (var entities = new Entity())
{
foreach (Item item in entities.Items.Where(x => x.id == id))
entities.DeleteObject(item);
entities.SaveChanges();
}
答案 0 :(得分:3)
您可以使用EntityFramework.Extensions更快地完成此操作 1)首先使用NuGet
安装EntityFramework.Extensions2)这是类似于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 Entities或PLINQO 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();