清除实体对象列表(C#和实体框架4)
本文关键字:实体 框架 对象 列表 清除 | 更新日期: 2023-09-27 18:22:04
我有一个要从数据库中删除的对象列表。有比使用更好的方法吗
foreach (Entity e in entities)
{
context.Entities.remove(e);
}
显然,这将在每次对DB进行删除查询,这确实很耗时。
最后我决定换一种方式,但我相信一定有更好的解决方案。这就是我想做的(获得所有WTA,然后删除它们):
List<int> cycles = scenario.Cycles.Select(x=>x.cycle_id).ToList();
List<int> activitiesForScenario = context.Activities.Where(
a=> cycles.Contains(a.Cycle.cycle_id)).Select(a=>a.activity_id).ToList();
List<WTA> wtas=
context.WTAs.Where(wta => activitiesForScenario.Contains(wta.activity_id_fk)).ToList();
foreach (Week_TSE_activities wta in weekTSEactivities)
{
context.Week_TSE_activities.Remove(wta);
}
现在就是这样(好多了,但我认为这不是一个好的解决方案)。
foreach (Cycle cycle in scenario.Cycles)
{
foreach (Activity activity in cycle.Activities)
{
activity.WTAs.Clear();
}
}
谢谢你的帮助。
我过去使用EF进行大规模删除的方式从您上面提到的(使用循环)到使用context.ExecuteStoreQuery("DELETE FROM catalog");
实际运行硬编码删除查询
在你有循环的版本上,它应该在你完成上下文后进行大规模删除。SaveChanges()不应该吗?