我有一个存储带有 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 中进行这种批量更新而无需获取记录?