Ich nutze EF5 und Code First. Ich habe mir zum Context einen Initializer geschrieben, der im Seed() ein paar Daten erzeugen soll. Im ctor des DbContext wird mit
Database.SetInitializer(new MyInitializer());
die Datengenerierung angestoßen.
Der Initializer steht auf DropCreateDatabaseIfModelChanges.
Ich habe mir dazu einen Test geschrieben und da läuft es sporadisch. Beim Starten der Anwendung meistens überhaupt nicht, es sei denn ich lösche die DB vorher. Allerdings erzeugt er die Demo Daten dann doppelt. Ich habe mir das im Debugger angeschaut und finde nichts wo er ein 2. Mal über den Initializer geht.
Der Initializer soll im Context aufgerufen werden.
public class TrameloContext : DbContext, IDbContext { public TrameloContext() : base("Name=TrameloContext") { Database.SetInitializer(new TrameloInitializer()); }
//TODO: Mapping festlegen //Beispiele public DbSet<TariffCategory> Categories { get; set; } public DbSet<Tariff> Tariffs { get; set; }
Klappt ja auch meistens. Nur wenn dann einmal zu viel! Und dann gar nicht mehr wenn die DB schon da ist. Dann muss ich Sie erst wieder löschen vor dem nächsten Start!