【发布时间】:2016-07-17 01:30:30
【问题描述】:
我在聚集索引上删除表中大约 5000 行,而 EF 需要将近 30 秒才能完成。
记录生成的 SQL 表明它正在对每一行进行一次删除:
DELETE [dbo].[Table]
WHERE ([ColumnID] = @0)
所以总共有 5000 笔交易。
我尝试过批量调用 SaveChanges(),但这似乎并没有显着提高性能,也没有改变上述行为。
//loop
{
//get batch
db.Table.RemoveRange(batch);
db.SaveChanges();
}
我查看了其他一些问题,这些问题指出了每行执行的删除命令的缺陷,但之后没有提出任何建议: How do I delete multiple rows in Entity Framework (without foreach)
有没有办法阻止 EF 每行执行一个命令?如果可能,我想避免使用内联 SQL。
【问题讨论】:
标签: c# entity-framework delete-row