【发布时间】:2014-04-05 02:32:13
【问题描述】:
我正在尝试从表中删除多行。
在常规 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')
);
【问题讨论】:
-
Tables 是您存储库的名称吗?
-
@CristiPufu & @paqogomez:是的,我正在检查 EntityFramework.Extended。不幸的是,MS 构建了
RemoveRange()函数,但它仍然循环。 -
我相信 RemoveRange 是一个社区贡献,它比自己循环遍历一堆实体要快一些,但它仍然一个一个地删除它们。 EF 中没有内置对批量删除的支持(除了运行自己的 SQL)
标签: c# entity-framework entity-framework-6