Esiste un modo per creare un indice nel database MS SQL Server utilizzando le migrazioni del codice di Entity Framework First, se l'indice deve essere:
Deve produrre qualcosa come questo:
CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[TableName]
(
[Column1] ASC,
[Column2] DESC
)
INCLUDE ([Column3], [Column4])
Ho trovato un articolo su questo argomento, ma offre una soluzione piuttosto ingombrante. Forse, qualcosa è migliorato dal momento in cui è stato scritto l'articolo.
Sono anche consapevole della possibilità di eseguire la mia migrazione eseguendo codice SQL arbitrario, ma voglio davvero essere in grado di utilizzare una versione del metodo CreateIndex
che fa tutto il lavoro sporco per me invece di scrivere codice SQL da solo.
Ho appena incontrato lo stesso problema e sembra che al momento non faccia parte dell'API di migrazione. La mia soluzione alternativa era di eseguire lo sql per la migrazione up e utilizzare il metodo DropIndex per la migrazione down.
public override void Up()
{
Sql("CREATE NONCLUSTERED INDEX IX_IndexName ON TableName ([Column1], [Column2] DESC) INCLUDE ([Column3], [Column4])");
}
public override void Down()
{
DropIndex("TableName", "IX_IndexName");
}
Non è bello, potrebbe essere riordinato in un metodo / estensione riutilizzabile, ecc, ma fa il lavoro.