I am trying to get Windsor to give me an instance ISession for each request, which should be injected into all the repositories
Here is my container setup
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<>))
);
Its based upon a StructureMap post here http://www.kevinwilliampang.com/2010/04/06/setting-up-asp-net-mvc-with-fluent-nhibernate-and-structuremap/
however, when this is run, a new Session is created for every object it is injected too. what am I missing?
(FYI the NHibernateHelper, sets up the config for 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()));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With