In relazione a questa domanda: EF Core consente a una colonna univoca di contenere più null?
Voglio che ogni valore sia unico, persino nullo.
config.Entity<Product>()
.HasIndex(b => b.ProductId)
.IsUnique();
L'equivalente in SQL funziona
[ProductId] int null unique foreign key references Product([Id])
Posso modificare questo codice per prevenire più null su una colonna?
Per impostazione predefinita, l'API Fluent per EF Core aggiunge
filter: "[ProductId] IS NOT NULL"
all'indice creato nella migrazione.
Per garantire che anche NULL sia unico, dobbiamo modificare il nostro indice, in questo modo:
config.Entity<Product>()
.HasIndex(b => b.ProductId)
.IsUnique()
.HasFilter(null);
Ciò rimuove il filtro e consente a NULL di essere univoco.