5

Sto tentando di creare un indice utilizzando le migrazioni di codice EF. L'indice sembra qualcosa di simile:EF 4.3 Migrazioni di codice con CreateIndex e argomenti anonimi

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

Il codice che ho finora è:

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

questo creerà l'indice per me, ma non includerà le colonne. Il metodo CreateIndex ha un override che prende qualcosa chiamato anonymousArguments. Non posso davvero trovare che molte informazioni su di esso quindi ho provato qualcosa di simile:

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

non vi era alcuna eccezione, ma non ha funzionato.

È possibile creare l'indice precedente utilizzando il metodo CreateIndex oppure devo utilizzare il metodo Sql per scrivere il T-SQL nella mia migrazione? Come si usano gli argomenti anonimi correttamente?

risposta

7

Gli argomenti anonimi sono pensati per essere specifici del provider. Per quanto sono stato in grado di scoprire, non sono utilizzati dal provider MSSQL (correggimi se ho torto).

Non esiste sovraccarico integrato per CreateIndex che gestisce le colonne incluse. O dovrai ricorrere all'utilizzo manuale di SQL, oppure puoi creare l'indice su tutte le colonne.

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