5

Estoy tratando de crear un índice utilizando EF Code Migrations. El índice se ve algo como:EF 4.3 Migraciones de código con CreateIndex y Argumentos anónimos

CREATE INDEX [IX_RatingId_CreatedAt] ON [Users] 
(
[RatingId] ASC, 
[CreatedAt] ASC 
) 
INCLUDE (Id, Email, DomainId) 

El código que tengo hasta ahora es:

CreateIndex("Users", 
      new string[] { "RatingId", "CreatedAt" }, 
      false, 
      "IX_RatingId_CreatedAt" 
      ); 

Esto creará el índice para mí, pero no incluirá las columnas. El método CreateIndex tiene una anulación que toma algo llamado AnonymousArguments. Realmente no puedo encontrar que mucha información sobre ella, así que intentó algo como:

CreateIndex("Users", 
      new string[] { "RatingId", "CreatedAt" }, 
      false, 
      "IX_RatingId_CreatedAt", 
      new { INCLUDE = "(Id, Email, DomainId)" }); 

No hubo una excepción, pero no funcionó.

¿Es posible crear el índice anterior utilizando el método CreateIndex o tengo que usar el método Sql para escribir el T-SQL en mi migración? ¿Cómo se usan los argumentos anónimos correctamente?

Respuesta

7

Los argumentos anónimos son específicos del proveedor. Por lo que he podido averiguar, el proveedor de MSSQL no los utiliza (corrígeme si me equivoco).

No hay una sobrecarga incorporada para CreateIndex que maneje columnas incluidas. O bien deberá recurrir a SQL manual, o puede crear el índice en todas las columnas.

CreateIndex("Users", 
     new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" }, 
     false, 
     "IX_RatingId_CreatedAt" 
     ); 
Cuestiones relacionadas