EF Codice Innanzitutto creare indice chiave primaria non cluster
-
25-10-2019 - |
Domanda
sto usando EF 4.1 CodeFirst per creare il mio DB. Sembra che EF sta creando tutte le chiavi primarie con indice cluster, che non è ottimale per noi in un caso (possibilmente più casi). C'è un modo per dire EF per generare questa tabella con chiave primaria come un indice non cluster?
Naturalmente potremmo farlo manualmente tramite script personalizzato dopo database è già stato creato, ma abbiamo un sacco di chiavi esterne che puntano a questo tavolo, sarebbe un bel soluzione non ottimale se v'è una migliore, più semplice modo di fare lo stesso già durante la creazione di DB. Qualsiasi aiuto apprezzato
Soluzione
Non v'è alcun modo per il controllo del codice SQL prima genera - è il codice prima e la sua filosofia corrente (quello cattivo in realtà) è:. Non si sa nulla del database e non si preoccupano
L'unico modo per modificare questo comportamento è quello di inizializzazione del database di scrittura personalizzato, utilizzare le query di database personalizzato per la ricerca di indice creato, rimuovere tale indice e crearne uno nuovo. Alcuni riferimenti:
- Come smettere di EF4.1 Codice-primo a creare indice Culstered per l'entità PK
- personalizzato initializer con l'aggiunta di un indice
- Esempio di più avanzato di inizializzazione
L'initilizer renderà la vostra soluzione dipende dal prodotto server di database di cemento.
Altri suggerimenti
Sì, c'è un modo è possibile specificare di non creare indici cluster. Se si utilizzano le migrazioni di codice, un file * cs viene generato al fine di popolare il database. In questo file è possibile specificare a parte la chiave primaria per ogni tabella, se deve essere creato con gli indici cluster.
.PrimaryKey(t => t.MID, null, true)