type the script name migrations migratedatabasetolatestversion make framework found first existing entityframework code automaticmigrationsenabled entity-framework indexing ef-code-first sql-server-2012 entity-framework-6

the - Crear índices con Entity Framework 6 Migrations



migration script entity framework (1)

¿Hay alguna manera de crear un índice en la base de datos de MS SQL Server utilizando Entity Framework Code First Migrations, si el índice tiene que ser:

  • descendiendo por al menos una columna
  • incluyendo otras columnas
?

Tiene que producir algo como esto:

CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[TableName] ( [Column1] ASC, [Column2] DESC ) INCLUDE ([Column3], [Column4])

Encontré un artículo sobre este tema, pero ofrece una solución bastante engorrosa. Posiblemente, algo ha mejorado desde el momento en que se escribió el artículo.

También soy consciente de la capacidad de hacer que mi migración ejecute código SQL arbitrario, pero realmente quiero poder utilizar alguna versión del método CreateIndex que me haga todo el trabajo sucio en lugar de escribir código SQL.


Me encontré con el mismo problema y parece que no es parte de la API de migraciones en este momento. Mi solución fue simplemente ejecutar el SQL para la migración ascendente y usar el método DropIndex para la migración descendente.

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"); }

No es bonito, se puede arreglar en un método / extensión reutilizable, etc., pero cumple su función.