Ich verwende Entity Framework 6 mit diesem DbMigrationsConfiguration
:Entity Framework: Nur Seed beim Bau anfängliche Datenbank
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();
}
}
ich es in WebAPI auf diese Weise bin mit:
public static void Register(HttpConfiguration config)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());
}
Ich habe festgestellt, dass die Funktion Seed
jedes Mal ausgeführt wird, wenn meine Anwendung gestartet wird. Wie kann ich das verhindern? Ich mag es nur, wenn es zum ersten Mal ausgeführt wird, wenn es die anfänglichen Tabellen erstellt.
In meinen Projekten verwende ich stattdessen ['AddOrUpdate'] (https://msdn.microsoft.com/en-us/library/hh846514%28v=vs.103%29.aspx). Etwas wie 'context.Table.AddOrUpdate (entity => entity.Id, neue Entität {Id = 1});'. Funktioniert das? – Default
Ich mache das auch. Aber meine Seed-Methode enthält viele Daten, einschließlich CSV-Import. Das mag ich nicht jedes Mal, wenn ich meine Bewerbung starte. – dhrm
Sie können eine Einstellungstabelle mit einem Bitwert haben, der angibt, ob die Datenbank gesetzt wurde oder nicht, und dann mit diesem Wert handeln, wenn die Startmethode gestartet wird, z. Sie kommen sofort zurück, wenn Sie herausgefunden haben, dass der Samen bereits verwendet wurde. – Santhos