1

もともとは.NET2.0とVS2005で作成された古いプロジェクトがあり、最終的にはVS2008になりました。データアクセスにはNHibernate1.2を使用します。アップグレードの一環として、.NET 4.0とVS2010に移行しましたが、NHibernate1.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

名前が示すように、 は生の SQL を実行するためCreateSQLQuery、私が考える唯一の説明は、間違ったデータベースに接続しているということです。

パラメーターのプレースホルダーに使用していることを考えると?、SQL Server を使用していないことがわかります...したがって、接続文字列の外部でデータ ソース構成を必要とするのはおそらく DB です。

これにより、以前に見たもののオプションが開きます。異なる構成ファイル/レジストリ キーを使用する 32 ビットおよび 64 ビット ドライバーです。

于 2012-10-21T01:54:52.110 に答える