Savez-vous comment mettre en œuvre des opérations dans le Château de ActiveRecord?

StackOverflow https://stackoverflow.com/questions/38729

  •  09-06-2019
  •  | 
  •  

Question

J'ai décidé de faire un système pour un client à l'aide de Château ActiveRecord, tout s'est bien passé jusqu'à ce que j'ai trouvé que les opérations ne fonctionnent pas, par exemple;

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

Mais ça ne fonctionne pas, je lève une Exception juste pour essayer de la transaction est annulée, mais à ma surprise je vois que la première [Enregistrer] des enregistrements dans la base de données.Ce qui se passe?

Je suis nouveau sur le Château et NHibernate, tout d'abord je l'ai vu très intéressante et j'ai décidé d'aller avec elle et MySQL (je n'ai jamais travaillé avec cette DB), j'ai essayé ActiveWriter et il semblait très prometteur, mais après une longue et effortly semaine, je vois ce problème et maintenant je me sens comme je suis coincé et comme j'ai perdu mon temps.Il est censé être facile mais pour l'instant je me sens un frustated parce que je ne trouve pas assez d'informations pour faire cette séance d'entraînement, pouvez-vous m'aider?

Était-ce utile?

La solution

Ben qu'il a obtenu.Que le doc est un peu déroutant.Consultez le dernier bloc sur la page, "Les transactions imbriquées".

Autres conseils

Vous devez placer le code dans une étendue de session, comme ceci:

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

Lire plus ici.

J'ai finalement résolu, il s'est trouvé que je faisais mal, j'ai remplacé la méthode Save de Membre de la classe et fait sessionScope à l'intérieur et à l'intérieur d'une étendue de la transaction, de sorte que lorsqu'un impliqués dans une transaction de la portée de l'enregistrer dans la base de données, donc quand j'ai jeté l'exception de tout ce qui a déjà été enregistré, je pense que c'est ça.

En tous cas, merci pour l'aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top