我一直在使用 Fluent nHibernate/ASP.NET MVC 构建一个应用程序 - 我已经深入研究并发现保持“永久”SessionFactory 打开,然后对数据库的每个请求使用会话被认为是最合适的做法。好吧,这听起来不错……
不过,我对如何实现这一目标感到很困惑。我发现的所有内容都假设一个完整的结构化框架,该框架使用某种 IoC 容器系统……这对于我迄今为止所拥有的来说太先进了。有没有更简单的例子来说明如何实现这种设计?
我看过了在哪里可以找到好的 NHibernate 和 ASP.NET MVC 参考应用程序 https://stackoverflow.com/questions/563030/where-can-i-find-a-good-nhibernate-and-asp-net-mvc-reference-application
甚至阅读了《ASP.NET MVC in Action》一书,但它的示例比我想要实现的要复杂得多。我认为单例模型可以在 ' 的 Application_Start 中工作global.asax
’但这并没有产生我所希望的结果。它会继续处置我的工厂,并且永远不会重建它。
你可以暴露ISessionFactory
作为单例:
public sealed class FactoryManager
{
private static readonly ISessionFactory _instance = CreateSessionFactory();
static FactoryManager()
{ }
public static ISessionFactory Instance
{
get { return _instance; }
}
private static ISessionFactory CreateSessionFactory()
{
// TODO: configure fluentnhibernate and create a session factory
}
}
现在你可以使用FactoryManager.Instance
在你的代码中:
using (var session = FactoryManager.Instance.OpenSession())
using (var tx = session.BeginTransaction())
{
// TODO: use the session here
tx.Commit();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)