Meine Seed()
Methode wird nie aufgerufen. Es wird aufgerufen, wenn ich eine Update-Database
von der Package Manager Console, aber nie, wenn ich von Code ausführen. Wenn ich meine Datenbank lösche, werden alle Tabellen erstellt (also werden meine Migrationsklassen ausgeführt), aber mein Seed() - Code wird nie aufgerufen. MVC 4, Entity Frame Work 5 Code zuerst.Meine Seed() -Methode wird nie aufgerufen in Code First EF 5
Global.asax:
protected void Application_Start()
{
Database.SetInitializer<MyContext>(new DbInitializer());
}
dbinit:
internal class DbInitializer : MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>
{
}
DbContext:
public partial class MyContext : DbContext
{
public MyContext() : base("DefaultConnection")
{
}
// public DBSets....
}
Konfiguration:
internal sealed class Configuration : DbMigrationsConfiguration<MyContext>
{
public Configuration()
{
// The constructor is actually called
AutomaticMigrationsEnabled = false;
}
protected override void Seed(MyContext context)
{
// My seed code, never called
}
Was könnte falsch sein?
Sind Sie sicher, dass Sie etwas mit dem Kontext tun? DbContext ist faul; Es macht nicht viel von irgendetwas, bis Sie es zum Beispiel verwenden, indem Sie eine Abfrage ausführen oder ein Objekt hinzufügen. Ihr Initialisierer wird nur ausgeführt, wenn der Kontext zum ersten Mal verwendet wird. Sie können die Initialisierung veranlassen, indem Sie context.Database.Initialize aufrufen (false); –
Ich habe das gleiche Problem, obwohl ich nicht ganz die gleiche Konfiguration habe (ich verlasse mich auf die Out-of-Box-Erfahrung) .Ich habe versucht, context.database auszuführen.Initialize (false) mit true und false, aber keiner von beiden hat zur Ausführung der seed-Methode geführt. – Noel
@ArthurVickers Ja, da bin ich mir sicher. –