Ho questo modello:
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; }
}
E indice configurato tramite API Fluent:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique();
Sta creando una tabella con un indice filtrato unico. Come posso evitare che EF aggiunga il filtro? Voglio solo l'indice e non voglio che venga filtrato.
La creazione dell'indice filtrato escludendo i valori NULL
è il comportamento EF core predefinito per gli indici univoci contenenti colonne nullable.
È possibile utilizzare l'API fluente di HasFilter per modificare la condizione del filtro o disattivarla passando come argomento sql
null
:
entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
.IsUnique()
.HasFilter(null);