c# - 使用 RemoveRange() 批量删除行

标签 c# entity-framework entity-framework-6

我正在尝试从表中删除多行。

在常规 SQL Server 中,这很简单:

DELETE FROM Table
WHERE
    Table.Column = 'SomeRandomValue'
    AND Table.Column2 = 'AnotherRandomValue'

在 Entity Framework 6 中,他们引入了 RemoveRange()方法。
但是,当我使用它时, Entity Framework 不是使用我提供的 where 子句删除行,而是查询数据库以获取与 where 子句匹配的所有行并使用它们的主键逐一删除它们。

这是 EntityFramework 目前的限制吗? 还是我使用的 RemoveRange() 有误?

以下是我如何使用 RemoveRange():

db.Tables.RemoveRange(
    db.Tables
        .Where(_ => _.Column == 'SomeRandomValue'
            && _.Column2 == 'AnotherRandomValue')
);

最佳答案

我认为我们在这里达到了 EF 的限制。 有时你只需要使用 ExecuteSqlCommand保持性能。

关于c# - 使用 RemoveRange() 批量删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157005/

相关文章:

performance - Entity Framework ,在存储库而不是服务层查询是否有任何性能改进?

asp.net - 如何添加IDesignTimeDbContextFactory的实现以将迁移添加到.Net Core 2.0应用程序?

c# - 如何在 EntityFramework 中按 DateTime.Date 分组

c# - 以编程方式添加和编辑控件

c# - WCF List<string> 序列化/反序列化错误

multithreading - 线程安全 Entity Framework 6

c# - 在 Asp.Net MVC 5 中使用 Entity Framework 6 代码优先方法调用存储过程

c# - Entity Framework 委托(delegate)实体从外部源添加/加载

c# - 如何使用 asp.net mvc 和 unity 在 application_beginrequest 访问统一容器?

c# - 停止循环 C#?