为什么nhibernate没有像UoW那样适当的会话管理器?

时间:2009-07-17 19:39:55

标签: nhibernate

作为nHibernate的新手,我发现会话的创建有点令人困惑。

为什么nHibernate没有提供像(我相信)工作单位那样的东西?

还是有什么内置的东西,UofW更像是一个插件/偏好? (上下文:带有SQL Server的ASP.NET MVC Web应用程序)。

注意:我是nHibernate的新手,并且不知道MS如何做事。如果通常需要随产品下载等附带的东西,我会很喜欢它。

3 个答案:

答案 0 :(得分:4)

会话是一种工作单元,也是一种身份地图。您可以在其上创建自己的工作单元抽象。不同的应用程序需要不同类型的工作单元,不同的程序员也需要不同的实现。

您不需要超过50行代码来创建自己的工作单元实现来抽象会话和事务管理。

答案 1 :(得分:2)

如果您还没有找到它...... Web应用程序的单元工作组件是NHibernate Contrib项目的一部分,名为NHibernate Burrow。它具有相当的灵活性,支持短(每个请求会话)和长(会话跨越多个请求)对话。

我过去使用过Burrow和ASP.NET MVC并且它工作正常,但我还没有在MVC中尝试过长时间的对话。在它的当前状态中,为了使用它,您需要更新库引用并编译Burrow项目。这是一项额外的工作,但值得。

答案 2 :(得分:0)

我同意Paco的观点,尽管在网络应用程序中,这可能是很少的工作。

我认为真正的问题是我们大多数人都希望将上游代码与NHibernate上的直接依赖关系隔离开来,因此我们不希望直接针对会话。

一旦你绕过NHibernate这个抽象变得非常简单,但是在你第一次尝试学习NHibernate的同时,更难以理解这个抽象。