【问题标题】:NHibernate Passing Session to the RepositoryNHibernate 将会话传递到存储库
【发布时间】:2009-06-24 14:56:20
【问题描述】:

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

假设我有两个项目。

1) 测试套件 2) 业务对象

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

var repository = new CustomerRepository(_session);

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

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

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

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

    在测试方面,我们有一个基础测试类,任何包含与数据库相关的测试的测试类都从该类继承。然后我们在 testfixturesetup 中控制一个工作单元的开始和结束。一旦您习惯了在 NUnit 版本中我们使用的拆解不能保证运行(以防在设置或测试期间出现未处理的异常)这一事实,对我们来说工作得相当好。

    【讨论】:

    • 你在什么环境下运行?表格? WCF? ASP.Net?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多