在 Entity Framework Core 中为 SQLite 设置全局排序规则

Set global collation for SQLite in Entity Framework Core

提问人:TheHvidsten 提问时间:10/11/2023 最后编辑:marc_sTheHvidsten 更新时间:10/13/2023 访问量:50

问:

默认情况下,SQLite 区分大小写,因此我需要使用 Entity Framework Core 设置排序规则。NOCASE

我知道我可以像这样按列设置它:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyEntity>()
                .Property(t => t.MyProperty)
                .HasColumnType("TEXT COLLATE NOCASE");
}

但是数据库中的几乎每个文本列都需要它。

有没有办法将此排序规则设置为所有文本列,而不必手动遍历每个文本列?

我试过了,但这没有效果。modelBuilder.UseCollation("NOCASE");

SQLite Entity-Framework-Core 排序规则

评论

0赞 Svyatoslav Danyliv 10/11/2023
这回答了你的问题吗?EF Core 2.1.0 设置默认字符串长度和列类型

答:

1赞 bricelam 10/13/2023 #1

这看起来像一个错误。你能为它提交一个问题吗?

您可以通过在 DbContext 中重写来解决它:ConfigureConventions

protected override void ConfigureConventions(
    ModelConfigurationBuilder configurationBuilder)
{
    configurationBuilder.Properties<string>().UseCollation("NOCASE");
}

评论

0赞 TheHvidsten 10/14/2023
谢谢你的建议。github.com/dotnet/efcore/issues/32051 报告