将旧项目从 NHibernate 1.2 升级到 3.3

Posted

技术标签:

【中文标题】将旧项目从 NHibernate 1.2 升级到 3.3【英文标题】:Upgrading an old project from NHibernate 1.2 to 3.3 【发布时间】:2012-10-19 16:09:14 【问题描述】:

我们有一个旧项目,最初是用 .NET 2.0 和 VS2005 编写的,最终在 VS2008 中编写。它使用 NHibernate 1.2 进行数据访问。作为我们升级的一部分,我们迁移到了 .NET 4.0 和 VS2010,但是我们在从 NHibernate 1.2 迁移到 3.3 时遇到了一些问题。

我们遇到的主要问题是查询一个表,该表上有一个链接。我们正在运行的查询如下:

IQuery query = base.Session.CreateSQLQuery("select t from Transaction t inner join Order o where TransactionDate >= ? && TransactionDate <= ? order by TransactionDate desc");

我们得到 2 个不同的错误:数据库中不存在 t.Transaction 或 t.Orders。我们知道这些表存在,我检查过多次,我知道那里有数据......

我看到了问题What to be aware of when upgrading from NHibernate 1.2 to 3.2,它提到我们可能需要修改我们的映射文件...但没有提到需要更改的内容...有什么可以查看我们的映射文件并告诉我们需要改变什么?我承认,这是我第一次在较低级别使用 NHibernate(实际上是在与 DB 对话)。到目前为止,所有数据库的东西都已经“完成”了……只是现在升级才出现问题……

【问题讨论】:

【参考方案1】:

由于CreateSQLQuery,顾名思义,执行原始SQL,我能想到的唯一解释是你连接到错误的数据库。

考虑到您使用? 作为参数占位符,我知道您没有使用 SQL Server...所以它可能是一个需要连接字符串之外的数据源配置的数据库。

这会打开我以前见过的选项:32 位和 64 位驱动程序使用不同的配置文件/注册表项。

【讨论】:

我今天一直在看小学... :-) 嗯....机器是 64 位的,由于第 3 方控制的问题,IIS 被告知以 32 位运行...可能是这样...谢谢...会尝试早上那个! 还没有设法让它工作......尝试了不同的机器,不同版本的 mysql 驱动程序等......没有运气......回到第一方...... :( 我有,但是,开始看小学!谢谢!:)

以上是关于将旧项目从 NHibernate 1.2 升级到 3.3的主要内容,如果未能解决你的问题,请参考以下文章

Web项目从Oracle转为Mysql,fluentnhibernate-1.0和NHibernate2.1.0升级到NHibernate3.3的注意事项

将旧项目从 C++Builder 10.2 迁移到 10.2.3 在运行时崩溃

NHibernate 升级使用具有类型约束的方法破坏 EntityBase

是否值得将现有的 iOS 应用程序从 Phonegap 1.2 升级到 1.9?

如何将 VC++6.0 项目升级到 VS2010?

在 JBoss 5.1.1 上将 JSF 从 1.2 升级到 2.1