我使用SQLite数据库和代码优先方法进行EF Core 1.1.0预览。我在表A和表B中有两个字符串。如果我有
,我已经检查过了IQueryable<T> query = dbSet;
query = query.Where(i => i.A.Contains(pattern));
匹配区分大小写。这就是我对字符串A所需要的,但是当我想查询字符串B时,我想指定不区分大小写的匹配。
有可能吗?
我目前的解决方法是使用ToLower:
query = query.Where(i => i.B.ToLower().Contains(pattern.ToLower()));
这很有效,但我不确定它是最好的解决方案。
在我的OnModelCreating覆盖中,我尝试使用
modelBuilder.Entity<E>().Property(i => i.B).HasAnnotation("CaseSensitive", false);
但这没有效果,匹配(不使用ToLower)仍然区分大小写。
有没有办法说实体中的这个B字符串总是应该不区分大小写(即==,Contains,StartsWith,EndsWith等操作)?
从日志中,我可以看到查询转换为
SELECT ...
FROM ... AS "i"
WHERE ((instr("i"."B", @__pattern_0) > 0) OR (@__pattern_0 = ''))