Sql server 如何解决与实体框架的排序规则冲突?

Sql server 如何解决与实体框架的排序规则冲突?,sql-server,linq,entity-framework,linq-to-entities,collation,Sql Server,Linq,Entity Framework,Linq To Entities,Collation,我的EF模型从数据库中获取数据,该数据库具有一个从linkedserver获取数据的视图。linkedserver中数据库的排序规则已更改为SQL\u Latin1\u General\u CP1\u CI\u AS,而不是服务器。我假设这就是排序冲突的来源。每次使用该视图进行连接时,我都会遇到以下错误: 无法解决等于操作中“SQL\u Latin1\u General\u CP1\u CI\u AS”和“Modern\u Spanish\u CI\u AS”之间的排序规则冲突 我发现使用COL

我的EF模型从数据库中获取数据,该数据库具有一个从linkedserver获取数据的视图。linkedserver中数据库的排序规则已更改为SQL\u Latin1\u General\u CP1\u CI\u AS,而不是服务器。我假设这就是排序冲突的来源。每次使用该视图进行连接时,我都会遇到以下错误:

无法解决等于操作中“SQL\u Latin1\u General\u CP1\u CI\u AS”和“Modern\u Spanish\u CI\u AS”之间的排序规则冲突


我发现使用COLLATE在SQL中很容易解决排序问题。我似乎找不到一种方法来处理LINQ。LINQ可以用来处理这个问题吗?或者我应该用另一种方式解决这个问题吗?

我的理解是EF不支持这个功能


您可以创建一个新视图来解决冲突,并使用EF查询新视图。

如果我创建一个新视图,它仍然将来自具有不匹配排序规则的服务器。我知道,但您在问题中说过“使用排序规则在SQL中很容易解决排序规则问题”-因此,您应该能够在新视图中解决此问题…即使我使用COLLATE在联接上使用的列上创建新视图,它仍然抛出排序规则冲突异常您是否尝试过将排序规则放在查询的连接部分:table1 t1 join table2 t2 on t1.col collate SQL\u Latin1\u General\u xyz=t2.col这确实是ORM(特别是像EF这样的婴儿)权限之外的一个边缘案例,但我感觉到了您的痛苦。空值、日期和字符集都是关系数据库的致命弱点。在您的情况下,我倾向于为每个“远程”表创建一个视图,将其转换为匹配本地数据库的排序规则。让数据库处理字符集冲突/解决,因为它做得很好。