清除实体对象列表(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();
            }
        }

谢谢你的帮助。

清除实体对象列表(C#和实体框架4)

我过去使用EF进行大规模删除的方式从您上面提到的(使用循环)到使用context.ExecuteStoreQuery("DELETE FROM catalog"); 实际运行硬编码删除查询

在你有循环的版本上,它应该在你完成上下文后进行大规模删除。SaveChanges()不应该吗?