如何阻止 EF Core 在可空列上创建过滤索引
How can I stop EF Core from creating a filtered index on a nullable column
我有这个型号:
public class Subject
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public int LevelId { get; set; }
[ForeignKey("LevelId")]
public Level Level { get; set; }
[Column(TypeName = "datetime2")]
public DateTime? DeletedAt { get; set; }
}
并通过 Fluent 配置索引 API:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique();
它正在创建具有唯一过滤索引的 table。如何防止 EF 添加过滤器?我只想要索引,不想过滤它。
创建排除 NULL
值的过滤索引是 unique 包含可为空列的索引的默认 EF Core 行为。
您可以使用 HasFilter fluent API 更改过滤条件或通过将 null
作为 sql
参数传递来关闭它:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique()
.HasFilter(null);
我有这个型号:
public class Subject
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public int LevelId { get; set; }
[ForeignKey("LevelId")]
public Level Level { get; set; }
[Column(TypeName = "datetime2")]
public DateTime? DeletedAt { get; set; }
}
并通过 Fluent 配置索引 API:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique();
它正在创建具有唯一过滤索引的 table。如何防止 EF 添加过滤器?我只想要索引,不想过滤它。
创建排除 NULL
值的过滤索引是 unique 包含可为空列的索引的默认 EF Core 行为。
您可以使用 HasFilter fluent API 更改过滤条件或通过将 null
作为 sql
参数传递来关闭它:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique()
.HasFilter(null);