ToList()给出了错误 “无法解析排序规则冲突”
这是我的查询ToList()给出了错误 “无法解析排序规则冲突”
var maillst = (from o in ObjContext.CashDepositCapturings
join m in ObjContext.Merchants on o.MerchantID equals m.MerchantID
join u in ObjContext.Users on o.CreatedBy equals u.UserID
where u.EmailAddress != String.Empty && u.EmailAddress != null &&
o.CashDepositCapturingID.Equals(dataModel.CashDepositId)
select new CashDepositApproveMail
{
SendToEmailId = u.EmailAddress,
SendToFirstName = u.FirstName,
sendToLastName = u.LastName,
cashDepoCreatedBy = o.CreatedBy,
CashDepoCaptrId = o.CashDepositCapturingID
}).ToList();
这给了我错误:
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.
,但是当我删除.ToList(),它工作正常
我有三个这样的查询,我想将所有三个结果添加到一个列表中,并将其发送给某个函数。
当这到达数据库时,最终尝试比较使用不同排序规则存储的两个varchars。一种是对Latin1 General Case Insensitive Accent Sensitive使用SQL排序规则,另一种是排序规则的Windows风格。
在SQL中,您可以通过对相关列使用collate
来解决此问题,以确保它们在相同的归类中进行比较。在您的实体框架中,您将不得不寻找其他方式来使排序规则相同。
作为解决方法,只需更改排序规则以使它们相等即可。 – abatishchev 2013-02-20 21:34:44
@muhmud非常感谢我改变了我的数据库整理类型,以便它们匹配并且工作。 – 2013-02-21 03:48:14
@abatishchev非常感谢,我也一样想知道我们如何通过实体框架来处理这个问题。而男人感谢编辑它我的意思是让它更有意义.. – 2013-02-21 03:49:07
您应该为您正在使用的数据库添加标签(SQL Server?或?)。这可能是数据库引擎引发的异常,而不是实体框架。 – Slauma 2013-02-20 21:26:59
删除.ToList()工作的原因是因为Linq查询是懒惰评估的。这意味着查询在最后的时刻运行。删除.ToList()只意味着查询根本不被执行。 – 2013-02-20 21:31:45
@SystemDown非常感谢您的帮助。 – 2013-02-21 03:49:41