У меня есть таблица SQL, в которой хранятся фотографии с полем smallint SortOrder. Пользователи могут вставлять новые фотографии, указав порядок сортировки в десятичном формате, чтобы разместить новую запись между двумя существующими фотографиями (или перед первой фотографией). SortOrder будет сохранен как smallint, поэтому, когда я обнаружу, что вставка сместит существующие записи, мне нужно обновить все затронутые фотографии, чтобы увеличить SortOrder на 1.
Это легко сделать в хранимой процедуре, но я ищу наиболее эффективный способ сделать это с помощью Linq to SQL. Если мне нужно будет передать все записи клиенту, обновить их, а затем отправить их, я просто буду придерживаться хранимой процедуры, которая уже работает и работает очень быстро.
Вот T-SQL, который сдвигает записи:
UPDATE Photo
SET SortOrder = SortOrder + 1
WHERE AlbumId = @AlbumId
AND SortOrder >= CEILING(@SortOrder)
Есть ли способ выполнить такое массовое обновление в Linq для SQL без необходимости извлечения записей?