SORU
12 ŞUBAT 2009, PERŞEMBE


Current vs ETMENİZ SQL için İşlem

SQL bu SERİ klasik hareket paterni arasındaki farklar ne gibi:

using(var context = Domain.Instance.GetContext())
{
    try
    {
        context.Connection.Open();
        context.Transaction = context.Connection.BeginTransaction();
        /*code*/
        context.Transaction.Commit();
    }
    catch
    {
        context.Transaction.Rollback();
    }         
}

vs Current nesne

using (var context = Domain.Instance.GetContext())
using (var scope = new TransactionScope())
{
    try
    {
        /*code*/
        scope.Complete();
    }
    catch
    {
    }
}

CEVAP
12 ŞUBAT 2009, PERŞEMBE


TransactionScope kullanırken try/catch için gerek yok buna dikkat edilmesi gerekir inşa etmek gerekir. Sadece kapsam çıkıldığı zaman hareketi tamamlamak için kapsamı Complete aramak zorunda.

Bu söyleniyor, TransactionScope sensiz bir işlem gerektirebilir diğer yöntemlere yuva çağrıları hareket durumu nasıl geçmek zorunda sağlar çünkü genellikle daha iyi bir seçimdir.

DbConnection nesne BeginTransaction çağrılırken, bu işlem aynı işlem diğer işlemleri gerçekleştirmek istiyorsanız, etrafındaki nesne, ama farklı bir yöntemle geçmek zorunda.

TransactionScope sürece kapsamı var, bu konu üzerinde Transaction mevcut kaydettiği her şeyi, senin kod daha temiz ve daha sürdürülebilir hale idare edecektir.

Bunun üzerine, işlemler, sadece veritabanı bağlantısı katılabilir diğer kaynakları kullanmak mümkün olmanın yararı var.

Unutulmamalıdır durumlarda ihtiyacınız sıkmak en dışı bağlantıları ve veritabanı işlemleri, olabilir kullanmayacaksın TransactionScope; hatta karşı tek bir veritabanı, çalışma olasılığı Dağıtılmış İşlem Koordinatörü olarak kullanılan ve işlem olmak dönüştüğünü bir dağıtılmış işlem (hatta tek bir veritabanı bağlantısı).

Tasarım muddying ise bu durumda, etrafında bağlantıya özgü bir işlem geçirmeden düşünebilirsiniz.

Yaeğer bir kaynak sürekli olarak kullanacağınız biliyorsanız, (ve aynı iş parçacığı), başvuru sayısı bağlantınızı işlem/bir sınıf oluşturmak isteyebilirsiniz.

İnşaat, kaynak/artışlarla sayısını oluşturan bir sınıf oluşturacak. Olur da uygulamak IDisposable (hangi sen-cekti azaltma/bırakma/tamamlama/iptal zaman Kont sıfır), ve mağaza sayısı bir değişken vardır ThreadStaticAttribute uygulamalı.

Bu mantık kodundan işlem yönetimi ayırmak için izin verir, ve hala tek bir kaynak üzerine oldukça verimli bir şekilde yerine dağıtılmış bir işlem için artan tutun.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caina Mondo Zine

    Caina Mondo

    13 EKİM 2007
  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • Trulia

    Trulia

    29 Kasım 2006