在集成 Spring.NET 1.3.1 和 NHibernate 3.1 的时候遇到了一点麻烦。
在 NHibernate 3.1 中对于 Spring.NET 提供了一个名为 NHibernate.ByteCode.Spring 的延迟加载支持。可惜它使用了 Spring 1.3.0 的版本,如果只使用这个程序集配合 Spring.NET 1.3.1 ,当使用延迟加载的时候,总是报找不到 Spring.AOP 1.3.0 的异常。
在 Spring.NET 1.3.1 中倒是直接提供了与 NHibernate 支持的文件,可是只有 NHibernate 3.0 的支持文件 Spring.Data.NHibernate30.dll,也没有 3.1 版本。
既然这样,我就将 Spring.NET 1.3.1 中针对 NHibernate 3.0 的支持文件复制了一份,然后更名为 Spring.Data.NHibernate31,将原来项目引用的 NHibernate 3.0 删除,更新为现在的 NHibernate 3.1 , 然后,又修改了两个命名空间的错误 Bytecode 在代码中是小写的,但是源文件中有的地方使用了大写,还有 ProxyFactoryFactory 还需要实现一个方法 IsProxy, 都修改之后,编译生成程序集。
编译之后的 Spring.Data.NHibernate31.dll 下载
最新的 Spring.NET 1.3.2 中提供了最新的 NHibernate 各个版本的支持,更加方便了。