Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 25346|Yanıt: 2

[Kaynak] C#'da TransactionScope'un Kullanımı

[Bağlantıyı kopyala]
Yayınlandı 10.04.2017 10:16:25 | | | |
İş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ütfenYanıt






Önceki:CREATE DATABASE ifadesi, çoklu ifadeli işlemler içinde izin verilmez
Önümüzdeki:Linq'in OrderBy Program'ını Destekle dinamik alanları destekle
 Ev sahibi| Yayınlandı 10.04.2017 10:20:30 |
TransactionScope sınıfı iç içe kullanılabilir ve iç içe kullanmak istiyorsanız, iç içe işlem bloğunda TransactionScopeOption parametresini belirtmeniz gerekir. Varsayılan parametre Zorunludur.

İç içe TransactionScope sınıfının TransactionScopeOption Zorunluluğu olduğunda, işlemlerinin aynı ID'ye sahip olduğu sonucun ortaya çıktığını görebilirsiniz. Ayrıca, gerçek başarı ancak her iki TransactionScope da tamamlandığında olur.

TransactionScopeOption'u RequiresNew olarak ayarlarsanız, iç içe işlem blokları ile dış işlem blokları bağımsız olur ve birbirlerini etkilemez.

TransactionScopeOption, genellikle nadiren kullanılan mevcut blokun işlemlerini iptal etmek için Suppress olarak ayarlanmıştır.
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com