Вопрос о возможности блокировки в SQL Server (SQL Azure, если быть точным).sql transactioncope row level locking
Сценарий
Пучок записей выбираются с помощью операторов выбора. Мы цикл по записям Каждая запись обновляется в TransactionScope - (каждая запись независимо друг от друга, и нет никакой необходимости блокировки таблицы)
я прав, полагая, что выше приведет к блокировка уровня строки только этой конкретной строки записи?
Обрамление вопроса в контексте конкретного примера. В приведенном ниже примере каждый элемент в itemsToMove должен быть заблокирован по одному за раз?
var itemsToMove = ObjectContext.Where(emp => emp.ExpirationDate < DateTime.Now)
foreach(Item expiredItem in itemsToMove)
{
bool tSuccess = false;
using (TransactionScope transaction = new TransactionScope())
{
try
{
//We push this to another table. In this case Azure Storage.
bool bSuccess = PushToBackup();
if(bSuccess)
{
ObjectContext.DeleteObject(expiredItem);
}
else
{
//throw an exception or return
return false;
}
ObjectContext.SaveChanges();
transaction.Complete();
tSuccess = true;
}
catch (Exception e)
{
return cResults;
}
}
}
if (tSuccess)
{
ObjectContext.AcceptAllChanges();
}