Comment TransactionScope roll back transactions?

Je suis en train d'écrire un test d'intégration où je serai l'insertion d'un certain nombre d'objets dans une base de données, puis de vérifier si ma méthode récupère les objets.

Ma connexion à la base de données est par NHibernate...et ma méthode habituelle de la création d'un tel test serait de faire ce qui suit:

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();

Cependant, j'ai récemment découvert sur TransactionScope qui, apparemment, peut être utilisé à cet effet...

Certains exemple de code que j'ai trouvé est comme suit:

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;

}

Je crois que si je ne comprend pas la ligne txScope.Complete() que les données insérées seront annulées. Mais malheureusement je ne comprends pas comment c'est possible... comment le txScope objet de garder une trace de la deptAdapter et empAdapter des objets et de leurs transactions sur la base de données.

Je sens que je manque un peu d'informations ici...suis-je vraiment capable de remplacer ma BeginTransaction() et RollbackTransaction() appels en l'entourant de mon code à l'aide de TransactionScope?

Si non, comment puis ne TransactionScope travail à faire reculer les transactions?

  • Je n'ai jamais utilisé NHibernate, mais peut-être que ce lien va vous aider.
  • Si vous êtes à la recherche à une meilleure façon de gérer votre NHibernate séances de groupe des opérations des opérations, vous voudrez peut-être consulter mon blog sur ce sujet dotnetchris.wordpress.com/2009/01/27/...
InformationsquelleAutor mezoid | 2009-01-30