在Linq to SQL中执行条件批量更新

Jef*_*ley 3 bulk linq-to-sql

我有一个SQL表,用于存储带有smallint SortOrder字段的照片.用户可以插入新照片,指定小数排序顺序,将新记录放在2张现有照片之间(或第一张照片之前).SortOrder将存储为smallint,因此当我检测到插入将移动现有记录时,我需要更新所有受影响的照片以将SortOrder增加1.

这在存储过程中很容易实现,但我正在寻找使用Linq to SQL实现此目的的最有效方法.如果我必须将所有记录下载到客户端,更新它们,然后提交它们,那么我将坚持使用已经工作且速度非常快的存储过程.

这是改变记录的T-SQL:

    UPDATE      Photo
    SET         SortOrder = SortOrder + 1
    WHERE       AlbumId = @AlbumId
    AND         SortOrder >= CEILING(@SortOrder)
Run Code Online (Sandbox Code Playgroud)

有没有办法在Linq to SQL中进行这种批量更新而无需获取记录?

Sam*_*Sam 6

LINQ to SQL不为集合执行CUD语句,因此请坚持使用现有的实现,因为它在您的方案中是最好的.