linq2Entities下的多个操作

时间:2014-04-02 12:15:55

标签: c# linq-to-entities query-optimization

我一直在使用Linq2Entities很长一段时间在小规模的程序上。所以通常我的查询是基本的(在特定列中返回具有特定值的元素,添加/更新元素,删除元素,......)。

现在我正在转向更大规模的计划,鉴于我的经验与Linq2Entities一起使用,一切都很好,直到我不得不删除大量元素。

在Linq2Entities中,我只能找到一个带有实体的删除方法 - 所以要删除1000个元素,我首先需要检索它们然后逐个应用删除然后调用savechanges。

要么我缺少某些东西,要么我觉得a)这在性能方面非常糟糕; b)我最好将其作为数据库中的程序。

我的假设是对的吗?是否应该仅作为程序进行大规模清除/添加?或者有没有办法有效地使用我缺少的Linq2Entities?

1 个答案:

答案 0 :(得分:1)

如果您有主键值,那么您可以通过手动创建对象,设置键,并将它们附加到上下文并将其状态设置为删除来使用Context的其他功能。

 var ids = new List<Guid>();
            foreach (var id in ids)
            {
                Employee employee = new Employee();
                employee.Id = id;
                entityEntry = context.Entry(employee);
                entityEntry.State = EntityState.Deleted;
            }
            context.SaveChanges();