我们有一个旧项目,最初是用.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交谈)。到目前为止,所有的数据库内容都已经“完成”...它现在只有升级才能解决问题......
答案 0 :(得分:0)
由于CreateSQLQuery
,顾名思义,执行原始SQL,我能想到的唯一解释是你连接到错误的数据库。
考虑到你使用?
作为参数占位符,我知道你没有使用SQL Server ......所以它可能是一个需要在连接字符串之外配置数据源的数据库。
这打开了我以前见过的选项:使用不同配置文件/注册表项的32位和64位驱动程序。