Frage

Mit der folgenden einfachen Entitätsklasse erstellt EF4.1 Code-First Clustered Index für die PK UserId Spalte beim Intialisieren der Datenbank.

    public class User
    {
        [Key]
        public int UserId { get; set; }
        public int AppId  { get; set; }
        public string UserName { get; set; }
    }

Um die Leistung zu willen, sind meine Entwurfsziele, die generierten zu halten Users Tabelle physikalische Cluster nach dem AppId Coulmn nicht zum PK.

In meiner Initialisierungsklasse habe ich versucht, den autogenerierten PK -Clustered -Index manuell fallen zu lassen und den von mir benötigten Index zu erstellen, aber hier kein Hinweis, um den autogenerierten Namen vorherzusagen PK__Users__25518C17 Für den Index!

Ich bin neu in der Code-First-Welt und weiß wirklich nicht, ob es eine Problemumgehung für meine Designziele gibt.

Danke im Voraus

War es hilfreich?

Lösung

Sie müssen den Namen des auto generierten Index nicht vorhersagen. Sie müssen nur den Namen des Index auswählen. Für SQL Server können Sie Abfragen verwenden wie:

SELECT I.Name
FROM sys.indexes AS I
INNER JOIN sys.tables AS T ON
    I.object_Id = T.object_Id
WHERE I.is_primary_key = 1 
    AND T.Name = 'Users'

Sobald Sie den Namen in Ihrem benutzerdefinierten Initialisierer erhalten haben, können Sie den alten Index ändern und eine neue erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top