几年前,人们提出了以下问题:Entity Framework nvarchar Case Sensitivity on Foreign key .
简而言之,答案是:EF使用CLR来比较延迟加载的关联的键,并始终以区分大小写的方式执行此操作,即使数据库设置为不区分大小写的排序规则 .
不幸的是,我目前参与的项目大量使用VARCHAR主键列 . 数据库排序规则不区分大小写 .
修复数据库设计实际上不是一个选项,除了可能在主键列上设置CS排序规则(但这可能会破坏客户端应用程序) .
所以我的问题是双重的:
-
现在,Entity Framework是否提供某种指令或设置,以指示它进行不区分大小写的比较?
-
如果没有,是否可以使用触发器自动更改外键以匹配主键的外壳?或者你能想到其他任何解决方法吗?
BTW:SQL Server 2008 R2和实体框架版本6 .
1 回答
没有太多分析,这里有一个你可以尝试的清单:
编写存储过程并使用LOWER()函数,这是一个链接:http://www.w3schools.com/sql/sql_func_lcase.asp
使用Model-first映射数据库
通过'ModelContext'获取两个实体 . 'Entity' .Find('PrimaryKey')并在.NET中使用toLowerCase()方法制作"association"
如果您只想在不更改寄存器的情况下获取数据,请在SQL Server中创建一个视图