Création d'index avec Migration de Entity Framework 6

ef-code-first entity-framework entity-framework-6 indexing sql-server-2012

Question

Existe-t-il un moyen de créer un index dans la base de données MS SQL Server à l'aide de Migrations Entity Framework Code First, si l'index doit être:

  • décroissant d'au moins une colonne
  • y compris d'autres colonnes
?

Il doit produire quelque chose comme ceci:

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

J'ai trouvé un article sur ce sujet, mais il offre une solution assez lourde. Peut-être que quelque chose s'est amélioré depuis la rédaction de l'article.

Je suis également conscient de la possibilité d'exécuter du code SQL arbitraire dans ma migration, mais je souhaite vraiment pouvoir utiliser une version de la méthode CreateIndex qui effectue tout le travail à ma place, au lieu d'écrire moi-même le code SQL.

Réponse populaire

Je viens de rencontrer le même problème et il semble que cela ne fait pas partie de l'API de migration pour le moment. Ma solution de contournement consistait simplement à exécuter SQL pour la migration ascendante et à utiliser la méthode DropIndex pour la migration descendante.

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

Ce n'est pas joli, pourrait être rangé dans une méthode / extension réutilisable, etc., mais ça fait le travail.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow