Ich habe ein Problem beim Abrufen der Seed-Methode auf meinem benutzerdefinierten Datenbank-Initialisierer aufgerufen werden. Ich verwende EF 5.0 und habe den folgenden Code:DropCreateDatabaseAlways Seed nicht aufgerufen
public static class MyDatabase
{
public static void Initialize()
{
Database.SetInitializer(new MyInitializer());
}
}
public class MyInitializer : DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
base.Seed(context);
context.Roles.Add(new Role
{
ID = 1,
Name = "User",
});
context.Roles.Add(new Role
{
ID = 2,
Name = "Admin",
});
context.SaveChanges();
}
}
Diese beiden Klassen von der MVC-Anwendung in einer separaten Klassenbibliothek vorhanden sind. Im Global.asax
, nenne ich die Initialize()
Methode:
MyDatabase.Initialize();
Die Datenbank gerade fein erstellt wird, es ist nur die Seed(MyContext context)
Methoden nicht aufgerufen werden und keine Daten werden in der Datenbank setzen.
Aus Neugier, was passiert, wenn Sie base.Seed am Ende der Methode setzen? – IronMan84
Selbe Sache, es heißt nicht. Ich setze einen Haltepunkt auf den Kontext.Roles.Add und es bricht nie. Würde es etwas damit zu tun haben, dass sich der Initialisierer in einer anderen Klassenbibliothek befindet und nicht im Webprojekt selbst? Ich dachte, ich hätte es schon einmal so gemacht, kann mich aber nicht mehr genau erinnern. –
Es könnte. Es könnte auch sein, dass Sie alles in eine statische Klasse gestellt haben. – IronMan84