gpt4 book ai didi

asp.net-mvc - 温莎 + NHibernate + ISession + MVC

转载 作者:行者123 更新时间:2023-12-04 22:37:49 26 4
gpt4 key购买 nike

我试图让 Windsor 为每个请求提供一个实例 ISession,它应该被注入(inject)到所有存储库中

这是我的容器设置

container.AddFacility<FactorySupportFacility>().Register(
Component.For<ISessionFactory>().Instance(NHibernateHelper.GetSessionFactory()).LifeStyle.Singleton,
Component.For<ISession>().LifeStyle.Transient
.UsingFactoryMethod(kernel => kernel.Resolve<ISessionFactory>().OpenSession())
);

//add to the container
container.Register(
Component.For<IActionInvoker>().ImplementedBy<WindsorActionInvoker>(),
Component.For(typeof(IRepository<>)).ImplementedBy(typeof(NHibernateRepository<>))
);

它基于这里的 StructureMap 帖子
http://www.kevinwilliampang.com/2010/04/06/setting-up-asp-net-mvc-with-fluent-nhibernate-and-structuremap/

但是,当它运行时,也会为每个注入(inject)的对象创建一个新的 Session。我错过了什么?

(仅供引用 NHibernateHelper,为 Nhib 设置配置)

最佳答案

container.AddFacility<FactorySupportFacility>();
container.Register(Component.For<ISessionFactory>()
.LifeStyle.Singleton
.UsingFactoryMethod(() => new NhibernateConfigurator().CreateSessionFactory()));

container.Register(Component.For<ISession>()
.LifeStyle.PerWebRequest
.UsingFactoryMethod(kernel => kernel.Resolve<ISessionFactory>().OpenSession()));

关于asp.net-mvc - 温莎 + NHibernate + ISession + MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com