代码之家  ›  专栏  ›  技术社区  ›  cwap

NHibernate会议:有多少?何时创建?什么时候关门?

  •  1
  • cwap  · 技术社区  · 17 年前

    我在这里真的很挣扎。我试图使我的DAL程序集非常通用,以便它在webcontext、WCF和WinForms/WPF中工作。我的问题是会议。

    延迟加载很好,这是我真正想要的,但是在您加载对象的会话结束后,您就不能再延迟加载了。这对我来说是个大问题,因为我不知道应该在哪个范围内开始/结束会话。

    我见过很多人在HttpContext.Begin和End.End上启动它们,但这对我来说是不可行的,因为我不希望我的程序集链接到System.Web或绑定到HttpContext中调用。

    另一种选择是在整个DAL组件生命周期中只保留一个会话。这种方法有哪些优点和缺点?该程序集主要用作网站中的后端,但也用于WinForms应用程序。

    有人吗?:)

    [编辑] 我的另一个选择是编写自己的延迟加载代理集合,这反过来将打开一个新会话并获取集合应该包含的任何数据。对这种方法有何评论?

    1 回复  |  直到 17 年前
        1
  •  3
  •   Shane Courtrille    17 年前

    在我们的系统中,我们有工作单位的概念。对我们来说,一个工作单元是针对系统的单一操作。例如,从一个账户取钱或将钱存入一个账户将是一个单一的工作单元。

    就你想做的事而言,我们会做以下的。。。

    • 对于WebContext,我们将在HttpContext.Begin和.End中执行相同的操作