首页 文章

实体框架varchar外键不区分大小写

提问于
浏览
7

几年前,人们提出了以下问题:Entity Framework nvarchar Case Sensitivity on Foreign key .

简而言之,答案是:EF使用CLR来比较延迟加载的关联的键,并始终以区分大小写的方式执行此操作,即使数据库设置为不区分大小写的排序规则 .

不幸的是,我目前参与的项目大量使用VARCHAR主键列 . 数据库排序规则不区分大小写 .

修复数据库设计实际上不是一个选项,除了可能在主键列上设置CS排序规则(但这可能会破坏客户端应用程序) .

所以我的问题是双重的:

  • 现在,Entity Framework是否提供某种指令或设置,以指示它进行不区分大小写的比较?

  • 如果没有,是否可以使用触发器自动更改外键以匹配主键的外壳?或者你能想到其他任何解决方法吗?

BTW:SQL Server 2008 R2和实体框架版本6 .

1 回答

  • 1

    没有太多分析,这里有一个你可以尝试的清单:

    • 编写存储过程并使用LOWER()函数,这是一个链接:http://www.w3schools.com/sql/sql_func_lcase.asp

    • 使用Model-first映射数据库

    • 通过'ModelContext'获取两个实体 . 'Entity' .Find('PrimaryKey')并在.NET中使用toLowerCase()方法制作"association"

    • 如果您只想在不更改寄存器的情况下获取数据,请在SQL Server中创建一个视图

相关问题