3

我对 NHibernate 有一些经验,我正在尝试开始使用 Castle Nhibernate 设施或 Castle NhibernateIntegration。我想知道,在哪里可以找到如何在服务层(业务、类库项目)中配置和执行事务控制(带属性)的演示项目?没有文档,而且我很难找到一些入门内容。

我在网上找到了一些示例,但只有代码片段而不是演示项目......我想下载一些东西来学习。我没有找到一个完整的解决方案,只是业务类(类库)中的配置和事务控制。

对不起,这里有这种线程,但我知道如何开始。

谢谢!

4

1 回答 1

0

如果您想查看 Castle Windsor 与 nHibernate 集成的完整示例,那么我会查看Sharp Architecture

Sharp 是一个“最佳实践”模板项目的尝试,并利用了许多技术(包括 Castle 和 nHibernate)。虽然它所做的某些事情可能不符合您的口味,但它会清楚地向您展示一种可以将它们组合在一起的方式。

如果您想了解低级别发生的情况,您可能需要在 GitHub 上搜索源代码库,因为 Sharp 在模板项目中使用它自己的预编译基类(尽管它仍然是开源的,所以您可以如果你愿意,看看发生了什么)。

当我将我的架构整合在一起时,这对我来说是一个非常宝贵的帮助,我可以诚实地说 Castle 和 nHibernate 是要走的路,所以你走在正确的轨道上。

编辑评论1:也许我在这里有点困惑。根据城堡笔记

设施是集装箱延伸的主要方式。使用工具,您可以将容器与外部框架(如 WCF 或 NHibernate)集成,向容器添加新功能,如事件连接、事务支持……或组件(同步、可启动语义……)。

据我所知,Castle Nhibernate 设施和城堡 NhibernateIntegration 都是设施,必须基于容器。

如果你想在没有容器的情况下工作,那么你需要使用某种形式的 Singleton Factory 来管理 SessionFactory。这里有一个例子

就控制事务的属性而言,这就是夏普的做法(参见此处)。您可能会重用此代码并将 NHibernateSession 替换为您自己的 Singleton (如他们的)。

您不需要实现 UnitOfWork,因为 nHibernate 有效地为您执行此操作。您真正需要的是一种架构,它允许您在单点控制(单例)上管理事务,并且在每个存储库中都可用。

于 2012-09-14T13:41:14.737 回答