2
關於SQL Server中鎖定範圍的問題(準確地說SQL Azure)。SQL事務處理器行級別鎖定
場景
使用select語句選擇了一堆記錄。 通過記錄 每個記錄一個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();
}