真的很难解决这个问题。使用nhibernate我试图从两个不同的数据库连接两个不同的表,但我得到一个排序规则冲突错误。
要解决此问题,我知道我需要将“collate 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中的一些字符串函数来将“collate Latin1_General_CI_AS”追加到sql的末尾但是找不到任何明显的东西。
nhibernate失败的sql在ms sql 2005管理工作室中失败但运行并返回结果如果我追加整理。
任何帮助都会得到很大的回复。
非常喜欢c
答案 0 :(得分:0)
好的答案就是(看起来很简单),你不能使用来自2个不同数据库的2个不同的域模型,这些数据库有2种不同的排序规则。
我创建了一个命名查询并附加了排序规则解析字符串。使用下面的剪辑显示如何将此查询作为域模型返回。
IList<UserCustomer> collection = session.GetNamedQuery("GetCustomerDetails")
.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(UserCustomer)))
.SetString("username", username)
.List<UserCustomer>();