SORU
30 Ocak 2009, Cuma


Nasıl Current geri hareketleri roll mu?

Bir veritabanı nesneleri bir dizi ekleme ve sonra benim yöntem bu nesneleri alır olup olmadığından emin olmak için kontrol edeceğim yerde, bir entegrasyon test yazıyorum.

Veritabanına bağlantı Arabiriminin geçer...ve böyle bir test oluşturmak ve benim her zamanki yöntem şu: yapmak olurdu

NHibernateSession.BeginTransaction();

//use nhibernate to insert objects into database
//retrieve objects via my method
//verify actual objects returned are the same as those inserted

NHibernateSession.RollbackTransaction();

Ancak, son zamanlarda görünüşe göre bu çok amaç için kullanılabilir TransactionScope ilgili...

13* *bazıları aşağıdaki gibidir:

public static int AddDepartmentWithEmployees(Department dept)
{

    int res = 0;

    DepartmentAdapter deptAdapter = new DepartmentAdapter();
    EmployeeAdapter empAdapter = new EmployeeAdapter();
    using (TransactionScope txScope = new TransactionScope())
    {

        res  = deptAdapter.Insert(dept.DepartmentName);
        //Custom method made to return Department ID 
        //after inserting the department "Identity Column"
        dept.DepartmentID = deptAdapter.GetInsertReturnValue();
        foreach(Employee emp in dept.Employees)
        {

            emp.EmployeeDeptID = dept.DepartmentID;
            res  = empAdapter.Insert(emp.EmployeeName, emp.EmployeeDeptID);

        }
        txScope.Complete();

    }
    return res;

}

Eğer eklenen veri satır txScope.Complete() dahil etmiyorum bile geri alınır inanıyorum. Ama ne yazık ki bu mümkün... nasıl txScope nesne deptAdapter empAdapter nesneler ve onların hareketleri takip ediyor veritabanında nasıl anlamıyorum.

Burada bilgi biraz eksik gibi hissediyorum...gerçekten benim değiştirmek mümkün mıyım BeginTransaction() RollbackTransaction() benim kod TransactionScope kullanarak çevredeki aramalar?

Peki o zaman TransactionScope hareketleri geri almak için çalışmıyor?

CEVAP
30 Ocak 2009, Cuma


Current adaptörünüz takip etmiyor aslında, ne veritabanı bağlantıları izler. DB bir bağlantı açtığınızda, bağlantıları ortam bir işlem (Transaction Scope) orada duruyor ve eğer öyleyse bunu askere olacak. Bu Distribtued bir İşlem için yükselmek server aynı SQL için ise fazla bir bağlantı varsa orada dikkatli olun.

Eğer bir durum oluşursa bile atın adı verilecek sağlanması kullanıyorsunuz bloğu kullanıyorsun beri ne olur. Eğer elden txScope önce çağrılırsa.() Tam Current geri alma bağlantıları işlemlerini (veya DTC) söyler.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EminemVEVO

    EminemVEVO

    12 Mayıs 2009
  • John Lynn

    John Lynn

    8 Ocak 2010
  • UniqueApps

    UniqueApps

    4 Ocak 2009