连接asp mvc + castle windsor + nhibernate的最佳方法是什么?
我有一个存储库,它被注入到我的控制器构造函数中。
这是一个很好的正确方法:
Component.For<ISessionFactory>().UsingFactoryMethod(()=> CreateSessionFactory() ).LifeStyle.Singleton,
Component.For<ISession>().UsingFactoryMethod ( k=>k.Resolve<ISessionFactory>().OpenSession()).LifeStyle.PerWebRequest
然后只将ISession
注入存储库构造函数?
交易和处理会话怎么样?
感谢您的帮助!
答案 0 :(得分:0)
MVC + Castle + NHibernate?最好的方法是使用S#arp架构而不是重新发明轮子。
发音为“Sharp Architecture”,这个 是一个坚实的建筑基础 用于快速构建可维护的Web 利用ASP.NET的应用程序 使用NHibernate的MVC框架。该 寻求的主要优势 使用任何架构框架是 减少必须编写的代码 同时提高了质量 最终产品。框架应该启用 开发人员花费的时间很少 允许的基础设施细节 他们把注意力集中在 域名和用户体验。 因此,S#arp架构 遵守以下关键 原则:
- 专注于领域驱动设计
- 松散耦合
- 预配置的基础架构
- 开放结束演示文稿
这样做的总体目标是允许 开发人员不用担心 申请“管道”和花 他们大部分时间都在增值 客户专注于业务 逻辑和开发富有用户 经验。
可以找到完整的示例here。
答案 1 :(得分:0)
我为你和其他想要这样做的人创建了一个设施。
https://github.com/haf/Castle.Facilities.NHibernate/wiki/NHibernate-Facility---Quick-Start
Nuget:Castle.Facilities.NHibernate
告诉我你是否觉得值得。这非常简约。只需在处理当前工作单元的命令处理程序周围放置一个[Transaction]。我不推荐使用不同交易的多种服务。因此,我在Windsor创建了一种名为 per transactions 的新生活方式。
我可以在城堡邮件列表上给你更多帮助。