【问题标题】:Case Insensitive Index mapping in EF CoreEF Core 中不区分大小写的索引映射
【发布时间】:2020-06-17 16:46:33
【问题描述】:

是否可以使用 Fluent API 在 Entity Framework 核心中创建不区分大小写的唯一索引?

例如,可以使用以下 SQL 在 Oracle 中定义不区分大小写的唯一索引:

create unique index test on "Person"(lower("Name"));

但是,据我所知,EF Core 中的唯一选项是区分大小写的唯一约束,例如:

builder.HasIndex(e => e.Name)
            .IsUnique();

我尝试了以下方法,但它不起作用:

builder.HasIndex(e => e.Name.ToLower())
            .IsUnique();

【问题讨论】:

    标签: oracle entity-framework entity-framework-core unique-constraint ef-fluent-api


    【解决方案1】:

    从 EF Core 5.0 开始,您可以使用collations

    builder.Property(e => e.name).UseCollation("SQL_Latin1_General_CP1_CI_AS");
    builder.HasIndex(e => e.name).IsUnique();
    

    对于 oracle,您可能想尝试不同的 collation name,例如 BINARY_CI

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 2020-03-24
      • 1970-01-01
      • 2019-10-04
      • 2017-07-19
      • 2021-04-01
      • 2018-06-21
      • 2020-07-22
      • 2021-05-11
      相关资源
      最近更新 更多