ASP MVC + Castle + nHibernate如何连接?

时间:2011-05-19 16:59:25

标签: asp.net-mvc nhibernate castle-windsor castle

连接asp mvc + castle windsor + nhibernate的最佳方法是什么?

我有一个存储库,它被注入到我的控制器构造函数中。

这是一个很好的正确方法:

Component.For<ISessionFactory>().UsingFactoryMethod(()=> CreateSessionFactory() ).LifeStyle.Singleton,

Component.For<ISession>().UsingFactoryMethod ( k=>k.Resolve<ISessionFactory>().OpenSession()).LifeStyle.PerWebRequest

然后只将ISession注入存储库构造函数?

交易和处理会话怎么样?

感谢您的帮助!

2 个答案:

答案 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 的新生活方式。

我可以在城堡邮件列表上给你更多帮助。