【发布时间】:2021-04-01 23:45:39
【问题描述】:
所以我尝试使用 ef-core 进行 linq 查询以进行 where 搜索,但无论我尝试了什么,我都无法让它进行不区分大小写的搜索。
如果我搜索“星期二”,它不会获取任何数据,因为数据库中的所有内容都保存为“星期二”。
经过搜索,我发现您必须通过 ef 核心迁移告诉 sqlite,您希望它对每个属性的以下代码不区分大小写。
b.Property<string>("DayOfWeek")
.HasColumnType("TEXT COLLATE NOCASE");
该信息在 ContextModelSnapshot.cs 文件中。
所以我这样做了,删除了数据库并执行了“更新数据库”,创建了一个新数据库但没有任何改变。
现在我当然可以在每次搜索中使用 .ToLower(),但如果我忘记将其添加到每个 where 子句中,这只会影响性能并增加失败的可能性。
我正在使用以下软件包来创建、迁移和访问数据库。
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.1">
我遗漏了什么,或者我是否误解了 sqlite 不区分大小写查询的整个概念?
【问题讨论】:
-
嗨@Johan Knape,关于此案的任何更新?
-
嗨@Yinqiu,它仍然不起作用。可能是我使用的是 sqlite 而不是 sqlserver,并且该命令不适用于 sqlite 数据库。
-
嗨@Johan Knape,你可以看到这个link
标签: sqlite asp.net-core entity-framework-core