Io uso EF 6.1.x Code First.
Ho letto che un indice con espressione filtro non è supportato da EF più recente.
Non c'è neanche una soluzione su SO:
Un anno dopo, qual è il modo funzionante per far funzionare un indice dei filtri con Code First e DbMigrations?
CREATE UNIQUE NONCLUSTERED INDEX [IX_DefaultLanguageApplicationId] ON [dbo].[Languages]
(
[IsDefaultLanguage] ASC,
[ApplicationId] ASC,
)
WHERE ([IsDefaultLanguage]=(1))
In EF 6.1, il modo di lavorare per far funzionare tutto questo con Code First e DbMigrations consiste nell'utilizzare il metodo Sql
nella classe DbMigration
:
public partial class AddIndexes : DbMigration
{
public override void Up()
{
Sql(@"CREATE UNIQUE NONCLUSTERED INDEX
[IX_DefaultLanguageApplicationId] ON [dbo].[Languages]
(
[IsDefaultLanguage] ASC,
[ApplicationId] ASC
)
WHERE ([IsDefaultLanguage]=(1))");
}
public override void Down()
{
DropIndex("dbo.Languages", "IX_DefaultLanguageApplicationId");
}
}
Ma mi rendo conto che probabilmente stai chiedendo se puoi creare un indice usando l'IndexAttribute introdotto in 6.1 , ma con un filtro - la risposta è "No"
Quasi un duplicato di: Entity Framework 6.1 - Crea un indice con l'istruzione INCLUDE