SORU
22 EKİM 2008, ÇARŞAMBA


İşlemlerde .net

C işlemleri yapmak için en iyi uygulamalar nelerdir# .Net 2.0. Kullanılması gereken dersler nelerdir? Tuzaklar vb için. Tüm bu işlemek ve şeyleri geri alma. Sadece DB içine veri eklerken bazı hareketleri lazım olabilecek bir proje başlıyorum. İşlemler hakkında bile temel şeyler için herhangi bir yanıt ya da bağlantıları açıktır.

CEVAP
22 EKİM 2008, ÇARŞAMBA


İşlemler 2 ana çeşidi; bağlantı hareketleri ve çevre hareketleri vardır. Bağlantı işlem (gibi SqlTransaction) bağlı direk db bağlantısı (SqlConnection) anlamına gelir devam etmelisiniz, geçen bağlantı - TAMAM bazı durumlarda, ama izin vermez "oluşturmak/kullanmak/release" kullanımı, ve izin vermez çapraz db çalışma. (Boşluk için biçimlendirilmiş) bir örnek:

using (IDbTransaction tran = conn.BeginTransaction()) {
    try {
        // your code
        tran.Commit();
    }  catch {
        tran.Rollback();
        throw;
    }
}

Çok karmaşık değil, ama bizim bağlantı sınırlı "conn". Eğer farklı yöntemler seslenmek istiyoruz, biz artık geçmek lazım "" etrafta. conn

Alternatif bir ortam hareket; yeni .NET 2.0, TransactionScope nesne (System.Transactions.dll) işlem aralığı (uygun sağlayıcıları otomatik olarak ortamdaki hareket Listeleme) üzerinde kullanım sağlar. Bu kolay retro-uygun mevcut (non-işlem) koduna ve birden çok sağlayıcı DTC eğer bir daha konuşursan yer alacak olsa da) konuşma yapar.

Örneğin:

using(TransactionScope tran = new TransactionScope()) {
    CallAMethodThatDoesSomeWork();
    CallAMethodThatDoesSomeMoreWork();
    tran.Complete();
}

İki yöntem kendi bağlantıları (açmak//kapatmak/elden) kullanabilen buraya dikkat edin, henüz sessizce geçmek için her şeyi bize kalmadan ortam işlemin bir parçası olacaklar.

Geri alınmış olacak. kod hatalarını, İmha() Tam olmadan çağrılır(), Eğer herkes mutsuz ise, işlem iptal edildi. beklenen yuvalama vb roll-back bir iç işlem henüz dış işlem tamamlayabilirsiniz olmasa da desteklenmektedir:

Current diğer avantajı sadece veritabanlarına bağlı değil, hareket algılayan herhangi bir sağlayıcı kullanabilirsiniz. XML, örneğin. Veya Current-uyumlu hatta bazı nesne modeli etrafında (yani .Hiç bu yaklaşım kendim kullandım, ancak geri alma yeteneği - bir hatıra daha kolay belki de, NET sınıfları).

Sonuçta, çok, çok yararlı bir nesne.

Bazı uyarılar:

  • SQL Server 2000, bir Current gidecek DTC hemen; bu sabit bir SQL Server 2005 ve üzeri, bu da kısa süreli (çok daha az yükü) kadar konuştun 2 vb kaynaklar, zaman yüksek DTC.
  • Bağlantı dizesi çimdik gerekebilir anlamına gelir glitch var

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • FOSDEM

    FOSDEM

    13 Ocak 2009

İLGİLİ SORU / CEVAPLAR