【问题标题】:ASP MVC + Castle + nHibernate how to connect?ASP MVC + Castle + nHibernate 怎么连接?
【发布时间】:2011-11-21 06:00:12
【问题描述】:

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

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

这是一个好的和正确的方法吗:

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

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

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

事务和处理会话呢?

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    MVC + Castle + NHibernate?最好的方法是使用 S#arp 架构,而不是重新发明轮子。

    发音为“Sharp Architecture”,这个 是坚实的建筑基础 用于快速构建可维护的网络 利用 ASP.NET 的应用程序 带有 NHibernate 的 MVC 框架。这 主要优势 使用任何架构框架是 减少必须编写的代码 在提高作品质量的同时 最终产品。框架应该启用 开发人员花很少的时间 基础设施细节,同时允许 他们将注意力集中在 领域和用户体验。 因此,S#arp 架构 坚持以下关键 原则:

    • 专注于领域驱动设计
    • 松散耦合
    • 预配置的基础架构
    • 开放式演示

    这样做的总体目标是允许 开发人员不必担心 应用“管道”并花费 他们大部分时间都在为 专注于业务的客户 逻辑和开发丰富的用户 经验。

    可以在here找到一个完整的例子。

    【讨论】:

    • Castle 支持它,无需重新发明轮子。
    【解决方案2】:

    我为您和其他任何想要这样做的人创建了一个设施。

    https://github.com/haf/Castle.Facilities.NHibernate/wiki/NHibernate-Facility---Quick-Start

    Nuget:Castle.Facilities.NHibernate

    如果您觉得值得,请告诉我。这是非常简约的。只需在处理当前工作单元的命令处理程序周围放置一个 [Transaction]。我不推荐具有不同交易的多项服务。因此,我在温莎创造了一种新的生活方式,称为per transaction

    我可以在城堡邮件列表上为您提供更多帮助。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 2017-01-30
      • 1970-01-01
      • 2011-03-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多