NHibernate将会话传递到存储库

NHibernate将会话传递到存储库,nhibernate,Nhibernate,如何将会话传递给存储库类 假设我有两个项目 1) 测试套件 2) BusinessObjects 存储库包含在BusinessObjects项目中。NHibernate会话在TestSuite项目中打开。现在,我想使用相同的会话,因为TestSuite项目在该会话上启动一个事务。目前,我正在使用以下工具: var repository=newcustomerrepository(\u会话) 当然,这看起来很难看!我在想,依赖注入框架可以挂接起来,并为我提供ISession对象,而无需传递到存储库

如何将会话传递给存储库类

假设我有两个项目

1) 测试套件 2) BusinessObjects

存储库包含在BusinessObjects项目中。NHibernate会话在TestSuite项目中打开。现在,我想使用相同的会话,因为TestSuite项目在该会话上启动一个事务。目前,我正在使用以下工具:

var repository=newcustomerrepository(\u会话)


当然,这看起来很难看!我在想,依赖注入框架可以挂接起来,并为我提供ISession对象,而无需传递到存储库中

在我们的WCF服务中,我们实际上使用一个UnitOfWork来包装单个操作并存储该操作的会话

存储库知道如何从当前正在运行的工作单元获取ISession


在测试方面,我们有一个基本测试类,任何包含与数据库相关的测试的测试类都可以继承它。然后,我们在testfixturesetup中控制工作单元的开始和结束。一旦您习惯了在NUnit版本中,我们使用的teardown不能保证运行(在安装或测试期间出现未处理的异常情况下),它对我们的工作就相当好了。

在我们的WCF服务中,我们实际上使用了一个UnitOfWork来包装单个操作并存储该操作的ISession

存储库知道如何从当前正在运行的工作单元获取ISession


在测试方面,我们有一个基本测试类,任何包含与数据库相关的测试的测试类都可以继承它。然后,我们在testfixturesetup中控制工作单元的开始和结束。一旦您习惯了在NUnit版本中,我们使用的teardown不能保证运行(在安装或测试过程中出现未处理的异常情况时),它对我们来说运行得相当好。

您运行的环境是什么?WinForms?WCF?ASP.Net?您在什么环境中运行?WinForms?WCF?ASP.Net?