Это основано на: http://nhforge.org/blogs/nhibernate/archive/2011/03/03/effective-nhibernate-session-management-for-web-apps.aspx
Код здесь: https://gist.github.com/852307
Мои вопросы в DAO:
//Example of dao
public class Dao<T> : IDao<T>
{
private readonly ISessionFactory sessionFactory;
public Dao(ISessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
public void Save(T transient)
{
sessionFactory.GetCurrentSession().Save(transient);
}
}
Я думаю,ISessionFactory get автоматически подключается с использованием правильного windsor?
public class NHibernateInstaller : IWindsorInstaller
{
#region IWindsorInstaller Members
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<ISessionFactory>()
.UsingFactoryMethod(k => BuildSessionFactory()));
container.Register(Component.For<NHibernateSessionModule>());
container.Register(Component.For<ISessionFactoryProvider>().AsFactory());
container.Register(Component.For<IEnumerable<ISessionFactory>>()
.UsingFactoryMethod(k => k.ResolveAll<ISessionFactory>()));
HttpContext.Current.Application[SessionFactoryProvider.Key]
= container.Resolve<ISessionFactoryProvider>();
}
#endregion
public ISessionFactory BuildSessionFactory() { ... }
}
Но в DAO при вызове метода:
sessionFactory.GetCurrentSession()
Как работает этот фрагмент и HttpModule, открывающий сеанс?
Я не вижу, как GetCurrentSession () подключается к сеансу, который был открыт HttpModule, поскольку GetCurrentSession является встроенным методом?