7

Sto utilizzando Entity Framework con Migrazioni automatiche.Come eliminare una tabella in Entity Framework Code Prima?

Così, quando aggiungo un nuovo modello al mio contesto, il mio database viene aggiornato e viene creata una nuova tabella.

Quello che voglio fare è il contrario, rilasciare completamente la tabella dal database. Tuttavia, la rimozione della definizione dalla classe Context non funziona.

public class CompanyContext : DbContext 
{ 
    public DbSet<Permission> Permissions { get; set; } 
    public DbSet<Company> Companies { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
} 

Ad esempio, desidero rimuovere la tabella Company dal database. Per fare ciò, rimuovo la proprietà Companies dalla classe CompanyContext. Tuttavia, non funziona.

Qual è il modo corretto di rilasciare tabelle in EF e utilizzare le migrazioni automatiche, se possibile?

risposta

1

È necessario implementare il "IDatabaseInitializer" e creare una logica personalizzata per eseguire questa operazione. Ad esempio, visitare this

Vedere anche "How do I use Entity Framework in Code First Drop-Create mode?" se può essere d'aiuto.

Nella mia esperienza, ho fatto eseguendo l'istruzione di seguito dal pacchetto console direttore di VS 2010

update-database -StartupProjectName "Your Project Namespace" -script -Verbose –force 

Assicurarsi di avere "lo spazio dei nomi del progetto" selezionato come progetto predefinito.

+0

Per quanto ne so, DropCreateDatabaseAlways rilascia l'intero database e lo ricrea. Di conseguenza hai perso i dati. Quello che voglio fare è lasciare solo il tavolo singolo. –

+0

Allora perché non aggiorni il tuo Modello ed esegui il comando della console del gestore pacchetti menzionato sopra? – CodeMad

+1

L'ho fatto. Ho rimosso le classi del modello dalla classe DbContext e ho anche eliminato il file del modello stesso. Pensavo che le migrazioni automatiche avrebbero dovuto gestire il resto. Non è. –

1

Aggiungere AutomaticMigrationDataLossAllowed = true; alla classe Configurazione e rilascia automaticamente le tabelle.

2

Il comando add-migrations crea una cartella Migrations. Puoi vedere [DateStamp] _InitialCreate.cs file contenente due metodi viz .; Su e giù. Il metodo Up della classe InitialCreate crea le tabelle del database che corrispondono ai set di entità del modello dati e il metodo Down li elimina. In genere quando si immette un comando per il rollback di un database, viene chiamato il metodo Giù. È possibile visualizzare istruzioni come DropIndex, DropForeignKey, istruzioni DropTable nel metodo Down.

In caso di domanda posta da Emre, scrivere l'istruzione DropTable nel metodo Giù della classe [DateStamp] _InitialCreate.cs e la tabella verrà eliminata.

Speriamo che possa essere d'aiuto.

Problemi correlati