1

我们有一个旧项目,最初是用 .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。我们知道这些表存在,我检查过多次,我知道那里有数据......

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

4

1 回答 1

0

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

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

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

于 2012-10-21T01:54:52.110 回答