Domanda

Ho deciso di creare un sistema per un cliente utilizzando Castello ActiveRecord, tutto è andato bene finché non ho scoperto, ad esempio, che le transazioni non funzionano;

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

Ma non funziona, lancio un'eccezione solo per provare a eseguire il rollback della transazione, ma con mia sorpresa vedo che il primo [Salva] registra nel database.Che cosa sta accadendo?

Sono nuovo su Castle e NHibernate, inizialmente l'ho visto molto attraente e ho deciso di continuare con MySQL (non ho mai lavorato con questo DB), ho provato ActiveWriter e sembrava molto promettente ma dopo un lungo e faticoso lavoro settimana vedo questo problema e ora mi sento come se fossi bloccato e come se avessi sprecato il mio tempo.Dovrebbe essere facile ma in questo momento mi sento frustrato perché non riesco a trovare abbastanza informazioni per realizzare questo allenamento, puoi aiutarmi?

È stato utile?

Soluzione

Ben ha capito.Quel documento è un po' confuso.Fare riferimento all'ultimo blocco sulla pagina, "Transazioni nidificate".

Altri suggerimenti

È necessario racchiudere il codice in un ambito di sessione, in questo modo:

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

Per saperne di più Qui.

Alla fine ho risolto, è successo che stavo sbagliando, ho sovrascritto il metodo Save della classe Member e ho creato sessionScope al suo interno e al suo interno un ambito di transazione, quindi quando ha coinvolto tutto ciò in un ambito di transazione ha salvato nel database, quindi quando ho lanciato l'eccezione tutto era già salvato, penso che sia tutto.

Tutto sommato, grazie per l'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top