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