1

Je construis l'application ASP.Net MVC basée sur UnitOfWorkApplication et j'aimerais utiliser l'installation ATM de Castle. Pour le moment j'ai un problème avec la vidange de la session à la fin de la requête. Ma classe de service (qui est appelé dans ma méthode d'action du contrôleur) ressemble à ceci:L'application de gestion automatique des transactions de Rhino UnitOfWorkApplication + Castle ne se vide pas automatiquement à la fin de la requête

[Transactional] 
public class UserAdminService : IUserAdminService 
{ 

    [Transaction(TransactionMode.Requires)] 
    public User CreateNewUser(string username, string password, string firstName, string lastName) 
    { 
     var u = new User(username) 
        { 
         PasswordHash = GetPasswordHash(password), 
         FirstName = firstName, 
         LastName = lastName 
        }; 
     userRepo.Save(u); 
     //UnitOfWork.CurrentSession.Flush(); 
     return u; 
    } 

Quand je décommenter le « UnitOfWork.CurrentSession.Flush(); » row tout fonctionne bien - un nouvel utilisateur est conservé dans DB. Mais rien n'est persistant si je ne vide pas la session explicitement. L'unité UnitOfWorkApplication + ATM doit vider les modifications à la fin de la requête AFAIK - est-ce exact?

Est-ce que quelqu'un a un conseil que dois-je essayer de le faire fonctionner sans l'appel de session.Flush() explicite?

+0

Je ne fais que penser à la configuration correcte de l'ATM - DefaultTransactionManager est-il correct? J'inscris la facilité AutomaticTransactionManagement.TransactionFacility et que Castle.Services.Transaction.DefaultTransactionManager en tant que composant dans le conteneur IoC de mon application. – Buthrakaur

Répondre

1

Je viens d'enregistrer RhinoTransactionFacility à la place de l'installation initiale de Castle ATM + DefaultTransactionManager et tout a commencé à fonctionner.