Настройте Castle Windsor Container и Nhibernate, используя Nhibernate Facility
Я пытаюсь настроить Nhibernate с помощью Castle Windsor Container, используя Nhibernate Facility. Но у меня
Вот мой 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>
и в моем global.asax я добавил следующие строки
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"));
Но я получаю следующую ошибку
*Компонент ISessionFactory не был сопоставлен для указанного псевдонима: nh.facility.default Трассировка стека: [FacilityException: компонент ISessionFactory не был сопоставлен для указанного псевдонима: nh.facility.default] Castle.Facilities.NHibernateIntegration.Internal.SessionFactoryResolver.GetSessionFactory(псевдоним строки) +147 Castle.Facilities.NHibernateIntegration.DefaultSessionManager.CreateSession(псевдоним строки) +65 Castle.Facabilities.NHibernateIntegration.DefaultSessionManager.OpenSession(псевдоним строки) +150 Castle.Facilities.NHefaultSessionMessionSessionSession Castle.Facilities.NHibernateIntegration.Components.Web.SessionWebModule.OnBeginRequest(Отправитель объекта, EventArgs e) +124 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.ExecuteP.Ep.Extete.Step.ExteteStep.ExteteStep.ExteteStep.ExteteStep.ExteteStep.ExteteS.Tept.ExpteStep.ExteteStep.ExteteStep.Extete. шаг, логическое и завершено синхронно) +75 *
Я не знаю, что мне не хватает в конфигурации. Какие-нибудь мысли?
Спасибо
Имран
1 ответ
ISessionManager
, ISessionFactoryResolver
и т. д. являются компонентами, управляемыми средством NHibernate. Вы не должны регистрировать их вручную.
Вы можете установить средство из этого web.config, выполнив:
container.Install(Configuration.FromAppConfig());
Для получения дополнительной информации см. Справочные документы об установщиках конфигурации.