我正在使用一个实体框架项目,我需要在其中按 ID 批量更新记录。ID(即特定表的主键)在运行时可用,我想更新以下查询中的所有记录:
UPDATE EntityTable
SET Column = @p0
WHERE EntityID IN '1,2,3,[...]'
我遇到的问题是我需要处理大约 60k 个 ID(最坏的情况),而我们的数据库软件(SQL Server 2008)无法处理:
查询处理器用尽了内部资源,无法生成查询计划。这是一个罕见的事件,仅适用于极其复杂的查询或引用大量表或分区的查询。请简化查询。如果您认为您错误地收到了此消息,请联系客户支持服务以获取更多信息。
通过谷歌搜索,我发现人们使用老派DataTable
和SqlDataAdapter
调用来实现这一点,但如果可能的话,我想保持实体框架的精神,或者如果需要的话,我想保留原始 sql。有没有办法以合理有效的方式做到这一点?