"RemoveRange" 批量删除 Entity Framework

"RemoveRange" for bulk delete in Entity Framework

我正在寻找机会一次删除几个 objects.The 正常删除发生在对象状态标记为删除和 SaveChanges() 方法 called.But 它应该加载到 memory.How 我能避免吗?我知道我可以附加具有指定 ID 的对象,然后将其删除,但我需要更复杂的查询,在 DbSet 上使用 expressions.Using sql 命令对我来说不是选项,因为我不想要如果他们 change.I 想使用 ORM 的强大功能,请手动修复字段名称。我注意到方法 RemoveRange 但它需要 IEnumerable 作为输入,这意味着它不会使用表达式树。那么,是否有任何扩展方法(nuget)或ORM支持通过表达式树删除?

您可以使用 EntityFramework.Extended.

示例

context.Users
    .Where(u => u.FirstName == "firstname")
    .Delete();

context.Tasks
    .Where(t => t.StatusId == 1)
    .Update(t => new Task { StatusId = 2 });