有什么原因导致EF Core不允许在同一列上创建多个索引?
以下是我尝试做的示例。EF Core不会生成两个索引,而是仅为第一次出现生成一个索引。然后,我必须手动编辑迁移脚本以获取第二个索引。
并不像SQL会抱怨那样?
builder
.ForSqlServerHasIndex(x => x.ColumnX)
.ForSqlServerInclude(nameof(TableA.ColumnA), nameof(TableA.ColumnB))
.HasFilter($"{nameof(TableA.ColumnX)} = 1 AND {nameof(TableA.IsDeleted)} = 0")
.HasName($"IX_{nameof(TableA)}_{nameof(TableA.ColumnX)}_Filter_1}");
builder
.ForSqlServerHasIndex(x => x.ColumnX)
.ForSqlServerInclude(nameof(TableA.ColumnA), nameof(TableA.ColumnB))
.HasFilter($"{nameof(TableA.ColumnX)} = 0 AND {nameof(TableA.IsDeleted)} = 0")
.HasName($"IX_{nameof(TableA)}_{nameof(TableA.ColumnX)}_Filter_0}");
以下是我尝试做的示例。EF Core不会生成两个索引,而是仅为第一次出现生成一个索引。然后,我必须手动编辑迁移脚本以获取第二个索引。
并不像SQL会抱怨那样?
OnModelCreating()
中重新排列我的过滤索引,使其在非过滤索引之后,问题得以解决。也许他们在 EFCore 5 中修复了这个问题? - Pieter-Jan Briers