代码之家  ›  专栏  ›  技术社区  ›  Alexis Abril

打开/关闭NHibernate会话

  •  3
  • Alexis Abril  · 技术社区  · 15 年前

    SessionFactory.Instance //returns ISessionFactory
    

    using(ISession session = SessionFactory.Instance.OpenSession())
    {
        using(ITransaction transaction = session.BeginTransaction())
        {
            //some operation
        }
    }
    

    上述代码将存在于给定实体的相应存储库类中。

    对于HttpModule,我有一个类似的想法:

    对于repository类,我基本上做了以下工作(配置使用WebSessionContext):

    using(ISession session = SessionFactory.Instance.GetCurrentSession())
    {
        using(ITransaction transaction = session.BeginTransaction())
        {
            //some operation
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  9
  •   Min    15 年前

    如果您使用的是web应用程序,我建议使用HttpModule在请求周期中打开并关闭会话。我可能会在应用程序启动时实例化的会话工厂。

    我个人认为存储库对象没有足够的信息来决定如何处理会话。

        2
  •  8
  •   Daniele Armanasco    10 年前

    • 使用分离对象的每个请求会话
    • 每次会话

    look here

    下面是一些关于实现的链接

    注意会话可以注入Doa/respository。

    对于完整的体系结构,请查看 sharp architecture

    Summer of Nhibernate