我正在处理数百万行的数据库中的数据。我从数据库中提取了一批1000件物品并处理它们没有问题。我没有加载整个实体,我只是为批次提取了几列数据。
我想要做的是将1000行标记为使用单个SQL命令处理。
类似的东西:
UPDATE dbo.Clients
SET HasProcessed = 1
WHERE ClientID IN (...)
......只是一个整数列表。
上下文:
Database.ExecuteSqlCommand
观:
我知道我可以将命令构建为纯字符串,但这意味着不使用任何SqlParameter
并且不会从查询计划优化中受益。
此外,我发现了一些有关表值参数的信息,但这需要创建一个表类型和一些我想避免的开销。毕竟这只是一个整数列表。
问题:
是否有一种简单(高效)的方式可以忽略实体框架或ExecuteSqlCommand
?
如果没有,并且使用表值参数是最好的方法,你能否提供一个完整的例子,说明如何将整数列表转换为最简单的类型并使用上述查询运行它?