我一直在使用Linq2Entities很长一段时间在小规模的程序上。所以通常我的查询是基本的(在特定列中返回具有特定值的元素,添加/更新元素,删除元素,......)。
现在我正在转向更大规模的计划,鉴于我的经验与Linq2Entities一起使用,一切都很好,直到我不得不删除大量元素。
在Linq2Entities中,我只能找到一个带有实体的删除方法 - 所以要删除1000个元素,我首先需要检索它们然后逐个应用删除然后调用savechanges。
要么我缺少某些东西,要么我觉得a)这在性能方面非常糟糕; b)我最好将其作为数据库中的程序。
我的假设是对的吗?是否应该仅作为程序进行大规模清除/添加?或者有没有办法有效地使用我缺少的Linq2Entities?
答案 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();