Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite EF Core 5韩元';不允许我进行不区分大小写的搜索_Sqlite_Asp.net Core_Entity Framework Core - Fatal编程技术网

Sqlite EF Core 5韩元';不允许我进行不区分大小写的搜索

Sqlite EF Core 5韩元';不允许我进行不区分大小写的搜索,sqlite,asp.net-core,entity-framework-core,Sqlite,Asp.net Core,Entity Framework Core,因此,我尝试使用ef core执行linq查询来执行where搜索,但无论我尝试了什么,我都无法让它执行不区分大小写的搜索 如中所示,如果我搜索“星期二”,它将不会获取任何数据,因为数据库中的所有内容都保存为“星期二” 搜索之后,我发现您必须通过ef core迁移告诉sqlite,对于每个属性,您希望它对以下代码不区分大小写 b.Property<string>("DayOfWeek") .HasColumnType("TEXT COLLATE

因此,我尝试使用ef core执行linq查询来执行where搜索,但无论我尝试了什么,我都无法让它执行不区分大小写的搜索

如中所示,如果我搜索“星期二”,它将不会获取任何数据,因为数据库中的所有内容都保存为“星期二”

搜索之后,我发现您必须通过ef core迁移告诉sqlite,对于每个属性,您希望它对以下代码不区分大小写

b.Property<string>("DayOfWeek")
    .HasColumnType("TEXT COLLATE NOCASE");

对于sqlite不区分大小写查询的整个概念,我遗漏了什么或理解错了什么?

您可以使用以下代码将属性配置为不区分大小写

在您的上下文中:

 protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.UseCollation("BINARY");

        modelBuilder.Entity<Entry>().Property(c => c.DayOfWeek)
            .UseCollation("NOCASE");
    }
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.UseCollation(“二进制”);
modelBuilder.Entity().Property(c=>c.DayOfWeek)
.UseCollation(“NOCASE”);
}

使用此设置,
DayOfWeek
将不区分大小写,而其他列仍将区分开来。

因此经过大量测试,我终于找到了错误

事实证明,您所需要的只是将OnModelCreating中的排序规则更改为NOCASE,突然之间,它在任何地方都像一个符咒一样工作

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.UseCollation("NOCASE");
}

嗨@Johan Knape,这个案子有什么新消息吗?嗨@Yinqiu,它仍然不起作用。可能是我使用的是sqlite而不是sqlserver,并且该命令不适用于sqlite数据库。您好@Johan Knape,您可以看到这个Hi@Johan Knape,如果我像下面这样配置它会有效吗?@Yinqiu不确定,它看起来比需要的更复杂。如果我这样做的话,我必须确保我的OnModelCreating在我的数据库中有每一个文本列,这将是相当多的。如果我只在迁移文件上执行,我只需要在那里执行那些文本列。我想这会使它更容易维护。我猜如果我只是说我需要所有文本字段都不区分大小写,你会给我这个答案。好吧,下次我会提出一个更好的问题,你要活到老学到老:-)是的,我误以为你只需要那个不区分大小写的专栏,哈哈。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.UseCollation("NOCASE");
}