EF Core是否允许唯一列包含多个空值?

gro*_*kky 3 c# entity-framework ef-code-first entity-framework-core

我的实体有一个允许为null的属性.但是,如果它不为null,那么它必须是唯一的.换句话说,该列是唯一的但允许多个空值.

我试过了:

config.Property(p => p.ProductId).IsRequired(false);
Run Code Online (Sandbox Code Playgroud)

我记得在前核心EF中努力工作.

这可能吗?如何配置实体?

Eri*_*kEJ 6

是的,您可以使用EF Core执行此操作,因为默认情况下,唯一索引创建为筛选索引(WHERE ... IS NOT NULL)

config.Entity<Product>()
        .HasIndex(b => b.ProductId)
        .IsUnique();
Run Code Online (Sandbox Code Playgroud)

https://github.com/aspnet/EntityFramework/pull/2868

  • 我假设这是针对 SQL Server 的 - 你知道 SQLite 是否也支持它吗?“过滤索引”似乎是MS的事情? (4认同)