使用 RemoveRange() 批量删除行

Bulk deleting rows with RemoveRange()(使用 RemoveRange() 批量删除行)
本文介绍了使用 RemoveRange() 批量删除行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to delete multiple rows from a table.

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

In regular SQL Server, this would be simple as this:

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

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

In Entity Framework 6, they have introduced RemoveRange() method.
However, when I use it, rather than deleting rows using the where clauses that I provided, Entity Framework queries the database to get all rows that match the where clauses and delete them one by one using their primary keys.

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

Is this the current limitation of EntityFramework? Or am I using RemoveRange() wrong?

以下是我使用 RemoveRange() 的方式:

Following is how I am using RemoveRange():

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

推荐答案

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

I think we reached here a limitation of EF. Sometimes you just have to use ExecuteSqlCommand to stay performant.

这篇关于使用 RemoveRange() 批量删除行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)