Question

J'essaie de configurer Nhibernate avec Castle Windsor Container à l'aide de l'installation Nhibernate. Mais j'ai

Voici mon web.config

<castle>
    <facilities>
      <facility id="nhibernate" 
                type="Castle.Facilities.NHibernateIntegration.NHibernateFacility, Castle.Facilities.NHibernateIntegration"                
                isWeb="true">
        <factory id="nhibernate.factory">
          <settings>
            <item key="connection.provider">NHibernate.Connection.DriverConnectionProvider</item>
            <item key="connection.driver_class">NHibernate.Driver.SqlClientDriver</item>
            <item key="connection.connection_string">Data Source=184.106.114.146\calyx;Initial Catalog=ClaimBook;User ID=system;Password=Manager1!;Persist Security Info=True;Max Pool Size=120;Connection Lifetime=120;</item>
            <item key="dialect">NHibernate.Dialect.MsSql2000Dialect</item>
            <item key="show_sql">true</item>
            <item key="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</item>
          </settings>
          <resources>            
            <resource assembly="Astute.Framework.Data" />
          </resources>
        </factory>
      </facility>
    </facilities>
  </castle>

et dans mon global.asax j'ai ajouté aux lignes suivantes

container.Kernel.Register(Component.For<ISessionManager>().ImplementedBy<DefaultSessionManager>().Named("nhfacility.sessionmanager"));
            container.Kernel.Register(Component.For<ISessionFactoryResolver>().ImplementedBy<SessionFactoryResolver>().Named("nhfacility.sessionfactory.resolver"));
            container.Kernel.Register(Component.For<ISessionStore>().ImplementedBy<WebSessionStore>().Named("nhfacility.sessionstore"));
            container.Kernel.Register(Component.For<ITransactionManager>().ImplementedBy<DefaultTransactionManager>().Named("nhibernate.transaction.manager"));

Mais je reçois une erreur suivante

*Un composant IsessionFactory n'a pas été cartographié pour les alias spécifiés: nh.factility.defaultStack Trace: [FacilityException: un composant IsessionFactory n'a pas été cartographié pour les alias spécifiés: nh.factility.default] château.facities.nhibernate Integration.internal.SessionFactoryResolver.getSessionFactory (String Alias) +147 Castle.facilities.NHiberNate Integration.DefaultSessionMager.Capities.NhiberNate Integration.DefaultSessionMager.Capities.NHiberNate Integration.DefaultSessionMager.Capities. String Alias) +65 Castle.facilities.nhibernate Intelectation.DefaultSessionManager.OpenSession (String Alias) +150 Castle.facilities.NHiberNate Intelegration.DefaultSessionManager.OpenSession () +37 Castle.Facities.NHiberNate Integration.Components.web.ssion EventArgs e) +124 System.Web.SYNCEventExecutionStep.System.web.httpapplication.iexEcutionStep.Execute () +148 System.Web.httpapplication.ExECUTESTEP (IEXECUTURESSTEP STAP, BOOLEAN & TLEEDSYNCHONELLY) +75*

Je ne sais pas ce qui me manque dans la configuration. Des pensées?

Merci

Imran

Était-ce utile?

La solution

ISessionManager, ISessionFactoryResolver, etc. sont des composants gérés par l'installation NHIBERNATE. Vous n'êtes pas censé les enregistrer manuellement.

Vous pouvez installer l'installation à partir de ce web.config en faisant:

container.Install(Configuration.FromAppConfig());

Pour plus d'informations, voir le Docs de référence sur les installateurs de configuration.

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