Frage

Ich verwende EF 4.1 Codefirst, um meine DB zu erstellen. Es scheint, dass EF alle Primärschlüssel mit Clustered -Index erstellt, was für uns in einem Fall (möglicherweise mehr Fälle) nicht optimal ist. Gibt es eine Möglichkeit, EF zu sagen, dass er diese Tabelle mit dem Primärschlüssel als nicht geklüsterer Index generieren soll?

Natürlich könnten wir es manuell mit benutzerdefiniertem Skript verwenden, nachdem die Datenbank bereits erstellt wurde, aber wir haben viele fremde Schlüssel, die auf diese Tabelle zeigen Das gleiche auch während der DB -Erstellung. Jede Hilfe geschätzt

War es hilfreich?

Lösung

Nein, es gibt keine Möglichkeit, SQL -Code zuerst zu steuern - es ist zuerst Code und seine aktuelle Philosophie (die schlechte) lautet: Sie wissen nichts über die Datenbank und Sie kümmern sich nicht darum.

Die einzige Möglichkeit, dieses Verhalten zu ändern, besteht darin, benutzerdefinierte Datenbankinitializer zu schreiben, benutzerdefinierte Datenbankabfragen zu verwenden, um nach dem erstellten Index zu suchen, diesen Index zu entfernen und eine neue zu erstellen. Einige Referenzen:

Der Initilizer wird Ihre Lösung vom Betondatenbankserver -Produkt abhängen.

Andere Tipps

Ja, es gibt eine Möglichkeit, keine Cluster -Indizes zu erstellen. Wenn Sie Code -Migrationen verwenden, wird eine *.cs -Datei generiert, um Ihre Datenbank zu füllen. In dieser Datei können Sie abgesehen von der Primärschlüssel für jede Tabelle angeben, wenn sie mit Cluster -Indizes erstellt werden müssen.

  .PrimaryKey(t => t.MID, null, true)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top