Entity framework 如何阻止EF Core在可空列上创建筛选索引

Entity framework 如何阻止EF Core在可空列上创建筛选索引,entity-framework,entity-framework-core,ef-core-2.0,Entity Framework,Entity Framework Core,Ef Core 2.0,我有这个模型: 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; } [C

我有这个模型:

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();

它正在创建一个具有唯一筛选索引的表。如何防止EF添加过滤器?我只需要索引,不希望对其进行筛选。

创建不包含
NULL
值的筛选索引是包含可空列的唯一索引的默认EF核心行为

您可以使用fluent API更改筛选条件,或通过将
null
作为
sql
参数传递来关闭筛选条件:

entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
    .IsUnique()
    .HasFilter(null);