sto usando Entity Framework 6 con questo DbMigrationsConfiguration
:Entity Framework: Solo Seed per la costruzione di database iniziale
public sealed class Configuration : DbMigrationsConfiguration<DataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(Danfoss.EnergyEfficiency.Data.DataContext context)
{
//Adding initial data to context
context.SaveChanges();
}
}
lo sto usando in WebAPI in questo modo:
public static void Register(HttpConfiguration config)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());
}
Ho notato che la funzione Seed
è in esecuzione ogni volta che si avvia l'applicazione. Come posso evitare questo? Mi piace solo che venga eseguito la prima volta che viene eseguito, quando crea le tabelle iniziali.
Nei miei progetti, invece, utilizzo ['AddOrUpdate'] (https://msdn.microsoft.com/en-us/library/hh846514%28v=vs.103%29.aspx). Qualcosa come 'context.Table.AddOrUpdate (entity => entity.Id, new Entity {Id = 1});'. Funzionerebbe? – Default
Lo sto facendo anche io. Ma il mio metodo Seed ha un sacco di dati da gestire tra cui alcune importazione CSV. Non mi piace che ciò accada ogni volta che avvio la mia applicazione. – dhrm
È possibile avere una tabella delle impostazioni con un valore di bit che indica se il database è stato seminato o meno e quindi agire in base a quel valore quando viene avviato il metodo seed, ad es. tornando subito quando hai scoperto che il seme è già stato usato. – Santhos