1

この問題を解決するのに本当に苦労しています。nhibernate を使用する 2 つの異なるデータベースから 2 つの異なるテーブルを結合しようとしていますが、照合競合エラーが発生します。

この問題を解決するには、SQL 文字列の末尾に「collat​​e Latin1_General_CI_AS」を追加する必要があることはわかっていますが、nhibernate を使用してそれを行う方法がわかりません。

エラー:

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

しばらくの間、本当の喜びなしに解決策を探してきました。単純な構成変更になる気がします。IQuery 内の文字列関数をオーバーライドして、SQL の末尾に「collat​​e Latin1_General_CI_AS」を追加できるのではないかと考えましたが、明らかなものは見つかりませんでした。

nhibernate が失敗する sql は ms sql 2005 管理スタジオで失敗しますが、照合を追加すると実行され、結果が返されます。

どんな助けでも大歓迎です。

たくさんの愛 c

4

1 に答える 1

0

これに対する答えは単純です (表示されるようです)。2 つの異なる照合順序を持つ 2 つの異なるデータベースから 2 つの異なるドメイン モデルを使用することはできません。

名前付きクエリを作成し、照合解析文字列を追加しました。以下の抜粋を使用して、このクエリをドメイン モデルとして返す方法を示します。

IList<UserCustomer> collection = session.GetNamedQuery("GetCustomerDetails")
                    .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(UserCustomer)))
                    .SetString("username", username)
                    .List<UserCustomer>();
于 2009-12-10T16:27:49.587 に答える