EntityFramework Transaktion über mehrere Instanziierungen Kontexten

Ich versuche zu verstehen, wie ich das machen kann Transaktionen der Arbeit mit meinem Projekt. Ich benutze Entity Framework 4, die mit einer Oracle 11g Datenbank.

Hier seine das Angebot, ich habe sehr viel Betrieb zu tun, und ich will zurück zu Rollen, wenn eine unerwartete Ausnahme ausgelöst. Ich habe mehrere Klasse mit einfache Bedienung, jede Klasse erstellen Sie eigene Rahmen und machen einige änderungen, zum Beispiel :

public class OneDaoFactory
{
    public int AddTreatment(Dto dto)
    {
        using (Context bdd = new Context())
        {
            //Make some changes in database
            bdd.SaveChanges();
        }
    }
}

Nun habe ich business die Methoden aufrufen, die von den Fabriken:

public void Business()
{
    try
    {
        OneDaoFactory.AddTreatment(dto);
        SecondDaoFactory.Add(dto2);
        throw new Exception("make a rollback");
    }
    catch(Exception ex)
    {
        //rollback
    }
}

Gibt es eine Möglichkeit, um eine Transaktion zu erzeugen, in der Wirtschaft, der Verwaltung von Kontexten erstellt, die von den Fabriken ? Andere als einen Kontext schaffen, in dem Unternehmen und geben Sie nicht an alle DaoFactories ?

Fand ich Dinge über TransactionScope, aber von dem was ich gesehen habe, ist es für SqlServer. Ich habe versucht, manuell eine Verbindung öffnen und eine Transaktion, aber das Umfeld scheint wieder zu öffnen ihrigen besitzt, also mein rollback nichts getan.

BEARBEITEN

Wenn möglich, möchte ich nicht einbeziehen EF in das Geschäft. Wie mit eine andere Fabrik zu öffnen und schließen Sie die Transaktion

  • Standardmäßig, wenn eine Verbindung geöffnet ist innen TransactionScope-es wird eingetragen werden in das ambient-Transaktion.
InformationsquelleAutor wishper | 2012-08-21
Schreibe einen Kommentar