1

真的很难解决这个问题。使用 nhibernate 我试图从两个不同的数据库连接两个不同的表,但我得到一个排序规则冲突错误。

为了解决这个问题,我知道我需要将“collat​​e Latin1_General_CI_AS”附加到我的 sql 字符串的末尾,但不知道如何使用 nhibernate 来做到这一点。

错误:

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

一段时间以来一直在寻找解决方案,但没有任何真正的快乐。我觉得这将是一个简单的配置更改。我想也许我可以覆盖 IQuery 中的一些字符串函数以将“collat​​e Latin1_General_CI_AS”附加到 sql 的末尾,但找不到任何明显的东西。

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 回答