我有这个型号:
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添加过滤器?我只想要索引并且不希望它被过滤。
答案 0 :(得分:14)
创建不包含NULL
值的筛选索引是包含可空列的唯一索引的默认EF Core行为。
您可以使用HasFilter流畅的API来更改过滤条件,或通过将null
作为sql
参数传递来关闭它:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique()
.HasFilter(null);