Erstellen von Indizes mit Entity Framework 6-Migrationen

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

Frage

Gibt es eine Möglichkeit, einen Index in der MS SQL Server-Datenbank mit Entity Framework Code First Migrations zu erstellen, wenn der Index sein muss:

  • absteigend von mindestens einer Spalte
  • einschließlich anderer Spalten
?

Es muss so etwas produzieren:

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

Ich habe einen Artikel zu diesem Thema gefunden, aber er bietet eine ziemlich umständliche Lösung. Möglicherweise hat sich etwas seit der Zeit, in der der Artikel geschrieben wurde, verbessert.

Mir ist auch bewusst, dass ich mit meiner Migration beliebigen SQL-Code ausführen kann, aber ich möchte wirklich in der Lage sein, eine Version der CreateIndex Methode zu verwenden, die die ganze Drecksarbeit für mich erledigt, anstatt selbst SQL-Code zu schreiben.

Beliebte Antwort

Ich bin gerade auf dasselbe Problem gestoßen und es scheint, dass es im Moment nicht Teil der Migrations-API ist. Meine Problemumgehung bestand lediglich darin, das SQL für die Hochmigration auszuführen und die DropIndex-Methode für die Downmigration zu verwenden.

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

Es ist nicht schön, könnte in eine wiederverwendbare Methode / Erweiterung usw. aufgeräumt werden, aber es macht den Job.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow