Я пытаюсь получить Виндзор, чтобы дать мне экземпляр ISession для каждого запроса, который должен быть впрыскивается во всех репозиторияхВиндзор + NHibernate + ISession + MVC
Вот моя установка контейнера
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/
Однако при его запуске создается новый сеанс для каждого объекта, который он также вводит. что мне не хватает?
(FYI NHibernateHelper, устанавливает конфигурации для Nhib)
Спасибо, я рассмотрю PerWebRequest. Я не слишком заинтересован в Facility, так как мне не нужна зависимость SessionManager. – dbones
Вы можете просто игнорировать ISessionManager и вводить ISessionFactory. Или даже создать дополнительную заводскую регистрацию и ввести ISession. –