Если у вас есть 10 или, возможно, 100 записей, и производительность не имеет большого значения, вы можете использовать что-то вроде:
using (var ctx = new MyContext())
{
var query = ctx.Entities
.Where(e => e.RowNumber > entityToDelete.RowNumber)
.OrderBy(e => e.RowNumber);
foreach (var entity in query)
entity.RowNumber -= 1;
ctx.DeleteObject(entityToDelete);
ctx.SaveChanges();
}
Если у вас тысячи записей, и производительность важна, приведенный выше код ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО BAAAAD идея.Лучшим решением будет хранимая процедура, чтобы избежать загрузки такого количества данных в память и отправки такого большого количества команд UPDATE (для каждой измененной записи) в БД.Гораздо лучше было бы ИЗБЕГАТЬ ЭТОГО ИЗМЕНЕНИЯ В ПЕРВОМ МЕСТЕ (если это не является абсолютно необходимым), потому что вам, очевидно, придется перейти на множество других записей, только потому, что вы удалили одну запись.* Редактировать Выделить важную часть ответа жирным шрифтом .