J'ai le code suivant dans ma méthode de démarrage de l'application avec le code pour configurer le conteneur et le support d'usine. La méthode d'usine semble être appelée seulement une fois au lieu de chaque fois que la session est nécessaire.Castle - Utilisation de la méthode d'usine et du mode de vie transitoire
_container.Kernel.Register(
Component.For<ISession>().LifeStyle.Transient
.UsingFactoryMethod(() =>
{
//Any line of code will only be hit once the first time ISession is requested.
}));
j'utilisais d'abord construire 1509 du tronc, mais mis à jour pour construire 1548 avec le même résultat . S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations pour aider moi.
Note: Il s'agit d'une liste de diffusion postée sur la liste de discussion du château en attente d'approbation.
Remarque 2: Ce code fonctionne avec la dernière version de Windsor. Cependant, nous travaillons sur la construction du tronc car nous avions besoin de la fonctionnalité de changeset 5927 (créée par mausch le 13 août 2009).
Voir:
- Register Multiple Components for Single Interface Using Castle Windsor
- http://fisheye2.atlassian.com/changelog/castleproject/?cs=5927
Je ne peux pas utiliser PerWebRequest car il bombarde lorsque je l'utilise au démarrage de l'application. J'ai modifié la question afin que lorsque je passe le code dans le débogueur, la première ligne de code dans la méthode d'usine est seulement atteinte la première fois que ISession est demandée et plus jamais. Il semble que le mode de vie transitoire ne fonctionne pas. – beckelmw
si vous suggérez que .UsingFactoryMethod en conjonction avec Lifestyle.Transient ne fonctionne pas, que vous avez tort. Je l'ai juste testé sur le coffre. –
encore, pourquoi n'utilisez-vous pas la facilité d'intégration de NHibernate? Je suis sûr qu'il peut gérer des scénarios comme le démarrage de votre application. –