将旧项目从 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