Bir kullanma ifadesinde bir IDbTransaction var, ancak bir kullanım deyiminde bir istisna atılırsa geri alınacak olursa emin değilim. Kullanım ifadesinin Dispose() 'ın çağrısını zorlayacağını biliyorum ama Rollback() için de aynısının geçerli olup olmadığını bilen var mı?Bir hata bildirimi, bir hata oluştuğunda bir veritabanı işlemini geri alır mı?
Güncelleme: Ayrıca, aşağıda açıklandığı gibi Commit() 'i açıkça kullanmam gerekiyor mu yoksa kullanım bildirimi ile de ilgilenilecek mi?
Benim kod şöyle sıralamak görünür:
using Microsoft.Practices.EnterpriseLibrary.Data;
...
using(IDbConnection connection = DatabaseInstance.CreateConnection())
{
connection.Open();
using(IDbTransaction transaction = connection.BeginTransaction())
{
//Attempt to do stuff in the database
//potentially throw an exception
transaction.Commit();
}
}
Merhaba, "taahhüt" vakasını açıklığa kavuşturmak için. Bu, elbette zorunlu değildir, çünkü use() {} sadece Dispose() yöntemini çağırır. Transaction.Dispose sınıfı, Commit ayrıca otomatikse, Commit veya Dispose olması gerekip gerekmediğini bilemez :) –
Ayrıca bkz. Http://stackoverflow.com/questions/6418992/is-it-a-better-practice-to-explicitly -küçük-işlem-rollback-or-let-an-hariç – nawfal