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

打开/关闭NHibernate会话

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

    SessionFactory.Instance //returns ISessionFactory
    

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

    使用存储库类,我基本上执行以下操作(配置使用WebSessionContext):

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

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

    对于存储库对象,我会通过构造函数将会话传递给它。

        2
  •  8
  •   Daniele Armanasco    12 年前

    我想这取决于你的谈话

    • 每次请求会话
    • 每次对话的会话数

    了解更多信息 look here

    注意,会话可以注入Doa/respostory。

    sharp architecture

    Summer of Nhibernate