我已经NHibernate的迷上了在我的asp.net MVC应用程序做不好不要丢弃的Isession
的的Isession注入到存储库。 我无法使用会话每个请求模式,因为我需要每个会话的会话aproach。
NHibernate ISession用于多个http请求。对象图很大,我不想在每个请求中加载整个图。这就是为什么ISession存储在用户HttpSession中的原因。
所述的ISession的生命周期配置有StructureMap:
For<ISession>().LifecycleIs(new HttpSessionLifecycle()).Use(x =>
{
var sessionSource = x.GetInstance<ISessionSource>();
return sessionSource.CreateSession();
});
在对话结束时,我打电话
Session.Clear()
清除的Isession。
当用户创建新对话时,StructureMap会创建一个新的ISession。 我没有找到一种处理ISession的方法。
所以它不好配置吗? 这是否保持与数据库的连接?
如果它没有实现IDisposable那么......那么就没有Dispose()和Disposing它是没有意义的。文档说什么? – 2012-02-01 22:48:58
ISession是一次性的,作为最佳实践应予以处置。但是,我的应用程序中的ISession必须跨越多个页面请求 – ms007 2012-02-01 22:59:33
当您说因为您需要每个对话模式的会话而无法使用每个请求模式的会话时,是否表示您希望跨多个http请求保留会话用户?如果您可以更多地解释您的用例,那么了解您的问题会有所帮助。谢谢。 – 2012-02-02 02:38:26