我有一个 ASP.NET MVC 应用程序,它使用 Spring.NET 1.2 进行依赖注入,使用 NHibernate 2.1 进行 ORM。它一直在 MVC 3 上运行,使用 S#arp 架构在我们自己编译的略微修改的版本中,我现在正在努力摆脱它。(即我将开始使用引用的 SharpArch .dlls 而不是纯源代码。)
Spring 的初始化是使用从此处获取的提示以及使用此处找到的 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 的初始化方式。
希望有人能指出我正确的方向。我很难过,因为我不是一开始就设置系统的人,而且很难找到版本升级的重大更改列表。
非常感谢!如果需要,我当然会提供更多信息。