几年前有人提出了以下问题:Entity Framework nvarchar Case Sensitivity on Foreign key .
简而言之,答案是:EF 使用 CLR 比较延迟加载关联的键,并且始终以区分大小写的方式执行此操作,即使数据库设置为不区分大小写的排序规则也是如此。
不幸的是,我目前参与的项目大量使用了 VARCHAR 主键列。数据库排序规则不区分大小写。
除了可能在主键列上设置 CS 排序规则之外,修复数据库设计确实不是一个选项(但这可能会破坏客户端应用程序)。
所以我的问题有两个方面:
- 现在的 Entity Framework 是否提供指令或设置 某种,指示它进行不区分大小写的比较?
- 如果不是,是否可以使用触发器来自动更改外键 匹配主键的大小写?或者你能想到任何 其他解决方法?
顺便说一句:SQL Server 2008 R2 和 Entity Framework 版本 6。
最佳答案
无需过多分析,以下是您可以尝试的事项列表:
- 编写存储过程并使用 LOWER() 函数,这里有一个链接:http://www.w3schools.com/sql/sql_func_lcase.asp
- 使用模型优先来映射您的数据库
- 通过 'ModelContext'.'Entity'.Find('PrimaryKey') 获取两个实体,并使用 .NET 中的 toLowerCase() 方法建立“关联”
- 如果您只想获取数据而不更改寄存器,请在 SQL Server 中创建一个 View
关于c# - Entity Framework varchar 外键不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32224102/