我已经在小型程序上使用Linq2Entities有一段时间了。所以通常我的查询是基本的(返回特定列中具有特定值的元素,添加/更新元素,删除元素,...)。
现在我正在转向一个更大规模的程序,鉴于我的经验,使用 Linq2Entities 并且一切都很好,直到我不得不删除大量元素。
在 Linq2Entities 中,我只能找到一个接受实体的删除方法 - 因此要删除 1000 个 elemnts,我首先需要检索它们,然后逐个应用删除,然后调用 savechanges。
要么我错过了一些东西,要么我觉得 a) 这在性能方面真的很糟糕,b) 我最好把它作为数据库中的一个过程。
我的假设是对的吗?是否应该仅作为程序进行大规模移除/添加?或者有没有办法用我缺少的 Linq2Entities 有效地做到这一点?
如果您有主键值,则可以使用上下文的其他功能,方法是手动创建对象,设置其键,并将它们附加到上下文并将其状态设置为删除。
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();