2008-09-02 10 views
4

Ich beschloss, ein System für einen Client mit Castle ActiveRecord zu machen, ging alles gut, bis ich festgestellt, dass die Transaktionen nicht funktionieren, zum Beispiel;Wissen Sie, wie Sie Transaktionen in Castle ActiveRecord implementieren?

   TransactionScope t = new TransactionScope(); 

       try 
       { 
        member.Save(); 

        //This is just to see transaction working 
        throw new Exception("Exception"); 

        foreach (qfh.Beneficiary b1 in l) 
        { 
         b1.Create(); 
        } 


       } 
       catch (Exception ex) 
       { 

        t.VoteRollBack(); 
        MessageBox.Show(ex.Message); 
       } 
       finally 
       { 
        t.Dispose(); 
       } 

Aber es funktioniert nicht, werfe ich eine Ausnahme nur die Transaktion zu versuchen, rollt zurück, aber für meine Überraschung, ich sehe, dass die ersten [Speicher] in die Datenbank erfaßt. Was ist los?

Ich bin neu auf Castle und NHibernate, zuerst sah ich es sehr attraktiv und ich beschloss, mit ihm und MySQL (ich habe nie mit dieser DB gearbeitet), versuchte ich ActiveWriter und es schien sehr vielversprechend, aber nach Eine lange und anstrengende Woche sehe ich dieses Problem und jetzt fühle ich mich wie ich feststecke und wie ich meine Zeit verschwendet habe. Es soll einfach sein, aber gerade jetzt fühle ich mich frustriert, weil ich nicht genug Informationen finde, um dieses Training zu machen. Kannst du mir helfen?

Antwort

3

Ben hat es. Dieses Dokument ist ein wenig verwirrend. Siehe den letzten Block on the page, "Verschachtelte Transaktionen".

5

benötigen Sie den Code in einem Sitzungsbereich wickeln, wie folgt aus:

using(new SessionScope()) 
{ 
    a.Save(); 
    b.Save(); 
    c.Save(); 
} 

mehr here lesen.

0

Ich endlich behoben, es ist passiert, dass ich falsch gemacht habe, habe ich die Save-Methode der Member-Klasse überschrieben und sessionScope innerhalb und innerhalb davon einen Transaktionsbereich gemacht, so wenn eine all dies in einem Transaktionsbereich beteiligt gespeichert in der Datenbank, also wenn ich die Ausnahme war alles war bereits gespeichert, ich denke, das ist es.

Alles in allem, danke für die Hilfe.

Verwandte Themen