我有一个存储带有 smallint SortOrder 字段的照片的 SQL 表。用户可以插入新照片,指定小数排序顺序以将新记录放置在 2 张现有照片之间(或在第一张照片之前)。 SortOrder 将存储为 smallint,因此当我检测到插入将移动现有记录时,我需要更新所有受影响的照片以将 SortOrder 增加 1。
这在存储过程中很容易做到,但我正在寻找使用 Linq to SQL 完成此任务的最有效方法。如果我必须将所有记录拉到客户端,更新它们,然后提交它们,那么我将坚持使用已经运行且速度非常快的存储过程。
这是移动记录的 T-SQL:
UPDATE Photo
SET SortOrder = SortOrder + 1
WHERE AlbumId = @AlbumId
AND SortOrder >= CEILING(@SortOrder)
有没有办法在 Linq to SQL 中进行这种批量更新而无需获取记录?
最佳答案
LINQ to SQL 不对集合执行 CUD 语句,因此请坚持使用您现有的实现,因为它在您的场景中是最好的。
关于linq-to-sql - 在 Linq to SQL 中执行条件批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130483/