Entity Framework和区分大小写的字符串搜索

40 浏览
0 Comments

Entity Framework和区分大小写的字符串搜索

可能是重复的问题,请参考以下链接:linq to entities case sensitive comparison

请查看下面的图片,你能帮忙解释为什么会获取到用户记录吗?如果我没记错的话,Entity Framework是区分大小写的。我传递的值是小写,但仍然能获取到记录。

为什么会获取到记录呢?:(

0
0 Comments

可能是因为查询的数据库使用了不区分大小写的排序规则(case-insensitive coallation),这样 SQL Server 本身就会忽略大小写,而不是 Entity Framework(EF)的问题。

解决方法:

1. 修改数据库的排序规则为区分大小写的(case-sensitive)排序规则。可以通过以下 SQL 语句来修改数据库的排序规则:

ALTER DATABASE [DatabaseName] COLLATE Latin1_General_CS_AS;

其中,[DatabaseName] 是要修改的数据库名称,Latin1_General_CS_AS 是区分大小写的排序规则。

2. 在 EF 查询中使用特定的大小写匹配方法。可以在查询中使用 SQL Server 的 COLLATE 关键字来指定大小写敏感的匹配规则。例如:

var result = context.TableName
    .Where(x => x.ColumnName == "searchString" COLLATE Latin1_General_CS_AS);

其中,TableName 是要查询的表名,ColumnName 是要匹配的列名,searchString 是要搜索的字符串,Latin1_General_CS_AS 是区分大小写的排序规则。

通过以上两种方法,可以在 EF 查询中实现对大小写敏感的字符串搜索。

0