【发布时间】:2009-06-11 03:52:51
【问题描述】:
我真的在这里与 NHibernate 苦苦挣扎。我试图让我的 DAL 程序集非常通用,以便它在 web 上下文、WCF 和 WinForms / WPF 中工作。我的问题是会话。
延迟加载很好,也是我真正想要的,但是在您加载对象的会话关闭后,您不能再进行延迟加载了。这对我来说是一件大事,因为我不知道我应该在哪个范围内开始/结束我的会话。
我看到很多人在 HttpContext.Begin 上启动它们并在 .End 上结束它们,但这对我来说是不可行的,因为我不希望我的程序集链接到 System.Web 或绑定到在 HttpContext 中调用。
另一种选择是在整个 DAL 程序集生命周期中只保留一个会话。这种方法有哪些优点和缺点?该程序集主要用作网站的后端,但也为 WinForms 应用程序做一些工作。
有接受者吗? :)
[编辑] 我的另一个选择是编写我自己的延迟加载代理集合,这反过来会打开一个新会话并获取集合应包含的任何数据。有这种方法的 cmet 吗?
【问题讨论】:
标签: nhibernate session