如果您想查看 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 有效地为您执行此操作。您真正需要的是一种架构,它允许您在单点控制(单例)上管理事务,并且在每个存储库中都可用。