使用Entity Framework删除大项目列表

use*_*331 4 c# entity-framework sql-delete

我想用EF删除一个大的项目列表,所以我试图逐个删除它们,但这需要很长时间.

我尝试使用.RemoveAll()我的列表中的方法,但它不更新数据库[仅从已加载的实体中删除]

所以我使用a SqlCommand从数据库中删除它们,我.RemoveAll()用来防止EF unexpected number of rows update (0)异常.

码:

dbContext.Database.ExecuteSqlCommand("DELETE FROM xxx WHERE xxx");
loadedEntity.subItems.ToList().RemoveAll(r => true);
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我的问题:有更好的方法吗?

小智 13

试试这个

var all = dbContext.XXX.Where(x => x.xxx == "xxx");
dbContext.XXX.RemoveRange(all);
dbContext.SaveChanges(); 
Run Code Online (Sandbox Code Playgroud)