2013-11-27 15 views
11

Si utilizza Entity Framework 4.4 e si utilizzano le migrazioni. Il database esiste già e dobbiamo aggiornarlo regolarmente. Il metodo seed, tuttavia, non viene chiamato e pertanto i valori di ricerca non vengono aggiunti.Il metodo Seed Framework Entity Framework non viene chiamato

Il codice è come segue:

internal sealed class Configuration : DbMigrationsConfiguration<MyDbContext> 
{ 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
      SetSqlGenerator("System.Data.SqlClient", new OurSqlServerMigrationSqlGenerator()); 
     } 

     protected override void Seed(KinectionDbContext context) 
     { 
      SeedLookupTables(context); 
     } 

     private static void SeedLookupTables(KinectionDbContext context) 
     { 
      context.Titles.AddOrUpdate(t => t.Value, 
       new Title {Value = "Mr"}, 
       new Title {Value = "Mrs"}, 
       new Title {Value = "Miss"}, 
       new Title {Value = "Ms"}, 
       new Title {Value = "Dr"} 
      ); 

      context.SaveChanges(); 
     } 

} 


public class MyDbContext : ObjectContext 
    { 
     public MyDbContext() 
     { 

     } 

     static MyDbContext() 
     { 
      Database.SetInitializer<KinectionDbContext>(null); 
     } 

     public DbSet<Title> Titles { get; set; } 

} 

E ci chiediamo:

Add-Migration Seed 

Ma la migrazione viene a mani vuote.

Qualcuno ha un'idea del motivo per cui viene chiamato il cmot e perché i valori aggiuntivi nella tabella di ricerca non vengono rilevati?

Grazie N

risposta

23

Il metodo migrazioni Seed

eseguito ogni volta che il comando PowerShell Update-database è eseguiti

È necessario chiamare Update-Database non Add-Migration

Add-Migration sca ffold un file di migrazione contenente comandi per migrare il database a una nuova versione. È vuoto perché non ci sono modifiche allo schema da fare. Non è necessario chiamare Add-Migration prima di chiamare Update-Database se tutto quello che vogliamo fare è seme

Riferimenti:

Code first Db initialization strategies.
Code first migrations recommended reading
Managed Migrations
Database initializer and Migrations Seed methods

+0

Grazie, che ha funzionato :). Tuttavia, c'è un modo per ottenere lo script sql per il seeding? –

+0

Vedere la risposta qui: http://stackoverflow.com/a/18190509/150342 – Colin

+0

aggiornamento-migrazione restituisce un sacco di errori perché nel mio metodo seed ho usato i file o altre implementazioni logiche –

Problemi correlati