Moja metoda Seed()
nigdy nie jest wywoływana. Jest wywoływana, gdy wykonuję Update-Database
z konsoli menedżera pakietów, ale nigdy, gdy uruchamiam kod. Po usunięciu bazy danych tworzone są wszystkie tabele (w ten sposób wykonywane są moje klasy migracji), ale mój kod Seed() nigdy nie jest wywoływany. MVC 4, Frame Entity Frame 5 Code First.Moja metoda Seed() nigdy nie jest wywoływana w 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....
}
Konfiguracja:
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
}
Co może być nie tak?
Czy jesteś pewien, że robisz coś w kontekście? DbContext jest leniwy; nie robi wiele z niczego, dopóki nie zaczniesz go używać, na przykład, uruchamiając zapytanie lub dodając obiekt. Twój inicjator uruchomi się tylko wtedy, gdy kontekst zostanie użyty po raz pierwszy. Możesz spowodować inicjalizację przez wywołanie context.Database.Initialize (false); –
Mam ten sam problem, chociaż nie mam dość tej samej konfiguracji (polegam na doświadczeniu out of box) .Spróbowałem uruchomić context.database.Initialize (false) z wartością true i false, ale żadna z nich nie powodowała uruchomienia metody seed. – Noel
@ArthurVickers Tak, jestem pewien. –