İşlem Kapsamı
TransactionScope, .NET çerçevesiyle birlikte gelen System.Transactions içinde bir sınıftır. Eğer TransactionScope, Complete metodu çağrılmadan serbest bırakılırsa (TransactionScope IDisposible arayüzü uygular, blok kullanılması önerilir), işlemin başarısız olduğunu düşüner ve çalıştırmayı geri alır. TransactionScope, etrafındaki işlemleri yöneten faydalı bir API'dir ("çevre" TransactionScope'u destekleyen veritabanlarının işlemleri otomatik olarak yönetebileceği anlamına gelir) ve çoğu ana akım veritabanı bu API'yi destekler; tabii ki Microsoft'un kendi MSSQL'i de dahil. Eğer TransactionScope'u desteklemeyen bir veritabanı veya işlem ile ilgili bir sistem kullanıyorsanız, yine de interceptor'u kullanabilirsiniz, ancak işlemleri destekleyen uygun bir API kullanmak için kodunuzu değiştirmeniz gerekecek (örneğin, veritabanı sağlayıcısının IDbTransactions uygulamasını almak için BeginTransaction API'sini kullanmak).
Yukarıdaki, normal şekilde geri alınıp alınamayacağını görmek için kasıtlı olarak attığım özel bir istisna, aşağıdaki resim ise istisnasız normal uygulama.
TransactionScope'un Complete metodunu çağırmak, işlemin başarıyla yürütüldüğünü gösterir. Tabii ki, işlem her zaman yürütülüyorsa, işlem gerekli değildir. İşlemlerin olmasının sebebi, birden fazla işlemde başarısızlık sorununu çözmektir ve bir hata olursa geri alınır. Çünkü . .NET'in TransactionScope'ında açık bir geri alma çağrısı yoktur ve en yakın eşdeğeri Dispose yöntemini kullanmaktır. Eğer TransactionScope, Complete yöntemi çağrılmadan önce serbest bırakılırsa, TransactionScope geri alma işlemi gerçekleştirir. Bu nedenle, geri dönüşü gerçekleştirmek için işlem engelleyici yüzüne bir Dispose çağrısı eklenmelidir.
Son olarak, kodu ekleyin!
Ekte kaynak kodu bulunmaktadır:Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfen Yanıt
|