EF Core with SQLite,Code First,不区分大小写包含一列,对其他列敏感

时间:2016-11-12 15:33:53

标签: sqlite ef-code-first entity-framework-core matching case-sensitive

我使用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 = ''))

0 个答案:

没有答案