使用(流利)NHibernate与StructureMap(或任何IoCC)

And*_*ock 5 c# structuremap nhibernate fluent-nhibernate

在我学习NHibernate的过程中,我已经达到了下一个障碍; 我该如何将它与StructureMap集成?

虽然代码示例非常受欢迎,但我对一般过程更感兴趣.

我打算做的是......

  • 使用Fluent NHibernate创建我的类映射以在NHibs配置中使用
  • 实现ISession和ISessionFactory
  • 将我的ISessionFactory实例作为单例引导到StructureMap中
  • 使用StructureMap注册ISession,使用per-HttpRequest缓存

但是,不要我需要调用我的会话实例各种整洁行动方法的HttpRequest的结束(因为这就是它的生命结束)?

如果我在Dispose()中进行整理,那么structuremap会为我解决这个问题吗?

如果没有,我该怎么办?

谢谢

安德鲁

bre*_*win 4

我在当前的 3 个项目中将 StructureMap 与 Fluent-nhibernate(和 NH Validator)结合使用。其中 2 个是 ASP MVC 应用程序,第三个是 WCF Web 服务。

您的总体策略听起来是正确的(除非您不会创建自己的 Session 或 SessionFactory,正如评论中已经指出的那样)。有关详细信息,请从这里获取我的配置代码:

http://brendanjerwin.github.com/development/dotnet/2009/03/11/using-nhibernate-validator-with- Fluent-nhibernate.html

这篇文章实际上是关于集成 NH Validator 和 Fluent-NHibernate,但您可以在文章的“奖励”部分中确切地看到我如何使用 StructureMap 注册会话工厂和 ISession。

RE:整理:您应该尝试并始终在事务中工作,并在工作单元结束时提交或回滚事务。NH 仅在需要时使用 SQL 连接,并将为您清理有限的资源。正常的垃圾收集将自行处理您的会话。

会话工厂是一个非常昂贵的对象,您只想初始化一次并在应用程序的整个生命周期中保留它。