当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc – ‘永久’SessionFactory,ASP.NET MVC和nHibernate

来源:互联网 收集:自由互联 发布时间:2021-06-24
我一直在使用Fluent nHibernate / ASP.NET MVC构建一个应用程序 – 我已经挖掘并发现,保持“永久”SessionFactory打开是最合适的做法,然后对每个数据库请求使用会话.好的,听起来不错…… 不过
我一直在使用Fluent nHibernate / ASP.NET MVC构建一个应用程序 – 我已经挖掘并发现,保持“永久”SessionFactory打开是最合适的做法,然后对每个数据库请求使用会话.好的,听起来不错……

不过,我对如何实现这一点感到很困惑.我找到的所有东西都假定了一个完整的结构化框架,它使用了某种IoC容器系统……而且这对我目前所拥有的东西来说太先进了.有没有更简单的例子来说明如何实现这种设计?

我看过Where can I find a good NHibernate and ASP.NET MVC Reference Application

甚至阅读“ASP.NET MVC in Action”这本书,但它的例子远比我想要实现的要复杂得多.我认为单例模型可以在’global.asax’的Application_Start中工作,但这并没有产生我希望的结果.它将继续处理我的工厂,永远不会重新创建它.

您可以将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();
}
网友评论