SQL Server CE 4 Entity Framework 4.3.1 Code First 不区分重音和不区分大小写的搜索

Posted

技术标签:

【中文标题】SQL Server CE 4 Entity Framework 4.3.1 Code First 不区分重音和不区分大小写的搜索【英文标题】:SQL Server CE 4 Entity Framework 4.3.1 Code First accent-insensitive and case-insensitive search 【发布时间】:2012-04-18 18:25:51 【问题描述】:

我将 EF 4.3.1 Code First 与 SQL Server CE 4 数据库一起使用,它运行良好,可以轻松创建所有表和数据库

但是现在我遇到了这个问题,我正在使用 LINQ 查询数据库

using (var db = new PeopleContext())
    
      var people = from e1 in db.People
                   where e1.Name.Contains("maria")
                   select e1;

我想得到名称包含 MaríaMariamaríamaria 的每个人的结果 - 注意 i - í 中的重音符号

我想要一个不区分重音和不区分大小写的搜索

提前感谢您的帮助


更新:好的,我找到了一种在 .NET 端使用 string.Compare()

的方法
string.Compare(string1, string2, CultureInfo.CurrentCulture,
CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);

IgnoreNonSpace 标志将忽略重音符号,而 IgnoreCase 标志将忽略大小写。

【问题讨论】:

【参考方案1】:

SQL Server Compact 仅支持 CI_AS(不支持 CI_AI) - 请参阅 http://msdn.microsoft.com/en-us/library/ms174596(v=sql.105).aspx - 因此您必须使用其他数据库产品,或者将数据的可搜索版本存储在另一列中

【讨论】:

嘿 Erik 感谢您的回复,还有一件事,因为我的数据库非常小,只有大约 300 行,有没有办法在列表中进行不区分重音和不区分大小写的搜索? linq 到对象 =) 不区分大小写,是的,使用 .NET 格式,不太确定是否区分重音

以上是关于SQL Server CE 4 Entity Framework 4.3.1 Code First 不区分重音和不区分大小写的搜索的主要内容,如果未能解决你的问题,请参考以下文章

使用 EF6 SQL Server CE Code First 创建数据库崩溃

使用 Visual Studio 2012 和 SQL Server Management Studio 2012 运行 SQL Server CE 4 查询

无法使用 SQL Server CE 4.0

将 SQL Server Compact 4.0.0.1 与 Entity Framework 4.3 一起使用

SQL Server CE 4.0 和频繁损坏的内存崩溃

使用 Sql Management Studio 2008 连接到 Sql Server CE 4.0 时出现问题