【发布时间】:2011-09-12 11:42:27
【问题描述】:
我有一个 ASP.NET MVC 应用程序,它使用 Spring.NET 1.2 进行依赖注入,使用 NHibernate 2.1 进行 ORM。它一直在 MVC 3 上运行,使用 S#arp 架构在一个我们自己编译的稍微修改过的版本中,我现在正在努力摆脱它。 (即,我将开始使用引用的 SharpArch .dll,而不是纯源代码。)
Spring 的初始化是使用来自 here 的提示以及使用 here 找到的 SpringServiceLocatorAdapter 完成的。 NH 使用 SharpArch 的 NHibernateSession.Init 进行初始化,它给定了我们的两个组装路径。映射是使用 HBM XML 文件完成的。
迁移到 NH 3 的决定导致了严重的 DLL Hell 案例,因此我当然不得不更新 FluentNH、NH Validator、SharpArch、Spring 和 Castle Windsor 二进制文件。为了让事情顺利进行,需要大量的体力劳动,更改引用并进行较小的代码修复。这一切都在意料之中。
现在我的软件运行良好,Spring 已初始化并且 DI 已正确完成。但是当存储库尝试使用它的 Session 对象时,我收到以下错误。
创建名称为 '' 的对象时出错: 没有服务类型 'SharpArch.NHibernate.ISessionFactoryKeyProvider' 定义
我一天中大部分时间都在试图找出造成这种情况的原因。 在我看来,SpringServiceLocatorAdapter 似乎已过时,但我找不到有关此的信息。此外,简单地删除它的使用会导致存储库的 Sessions 为 null,从而导致 NullReferenceExceptions。但据我所知,问题也可能是 NH 的初始化方式。
希望有人能指出我正确的方向。我很难过,因为我不是一开始就设置系统的人,而且很难找到版本升级的重大更改列表。
非常感谢!如果需要,我当然会提供更多信息。
【问题讨论】:
标签: nhibernate model-view-controller spring.net sharp-architecture