Wap*_*pac 5 sqlite case-sensitive matching ef-code-first entity-framework-core
我有使用 SQLite 数据库和代码优先方法的 EF Core 1.1.0 预览版。我在表 A 和 B 中有两个字符串。我已经检查过,如果我有
IQueryable<T> query = dbSet;
query = query.Where(i => i.A.Contains(pattern));
Run Code Online (Sandbox Code Playgroud)
匹配区分大小写。这就是字符串 A 所需要的,但是当我想查询字符串 B 时,我想指定不区分大小写的匹配。
是否可以?
我目前的解决方法是使用 ToLower:
query = query.Where(i => i.B.ToLower().Contains(pattern.ToLower()));
Run Code Online (Sandbox Code Playgroud)
这很有效,但我不确定这是最好的解决方案。
在我的 OnModelCreating 覆盖中,我尝试使用
modelBuilder.Entity<E>().Property(i => i.B).HasAnnotation("CaseSensitive", false);
Run Code Online (Sandbox Code Playgroud)
但这没有效果,匹配(不使用 ToLower)仍然区分大小写。
有没有办法说实体内的这个 B 字符串应该总是不区分大小写(即 ==、包含、StartsWith、EndsWith 之类的操作)?
从日志中,我可以看到查询转换为
SELECT ...
FROM ... AS "i"
WHERE ((instr("i"."B", @__pattern_0) > 0) OR (@__pattern_0 = ''))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
969 次 |
最近记录: |