Nie zapewniają sposobu, aby to zrobić do czasu RTM, w którym to momencie obiecali aplikację wiersza poleceń i dostawcę msdeploy. Źródło: http://blogs.msdn.com/b/adonet/archive/2011/11/29/code-first-migrations-beta-1-released.aspx
Oczywiście, że nie jest zadowolony z tego, polecenie PowerShell jest przechowywany w katalogu pakietów i jest zwykły tekst, wydaje się po prostu załadować do zespołu o nazwie EntityFramework.Migrations.Commands zapisane w tym samym katalogu.
Śledzenie za pośrednictwem tego zespołu wymyśliłem następujący
public class MyContext : DbContext
{
static MyContext()
{
DbMigrationsConfiguration configuration = new DbMigrationsConfiguration() {
MigrationsAssembly = typeof(MyContext).Assembly,
ContextType = typeof(MyContext),
AutomaticMigrationsEnabled = true,
};
DbMigrator dbMigrator = new DbMigrator(configuration);
dbMigrator.Update(null);
}
}
UPDATE: po trochę eksperymentów zorientowali się kilka rzeczy
- Przeprowadzanie aktualizacji w statycznym konstruktorze dla Twojego kontekst jest zły, ponieważ przerywa polecenia powłoki powers, znacznie lepiej jest dodać kod do uruchamiania aplikacji w inny sposób (Global.asax, WebActivator lub Main method)
- Powyższy kod działa tylko przy użyciu AutomaticMi należy ustawić obszar MigrationsNames, aby był on uruchamiany ręcznie utworzone migracje.
- Utworzona klasa konfiguracyjna powinna już istnieć w projekcie (dodana podczas instalowania pakietu migracyjnego nuget), więc po prostu utworzę tę wersję.
co oznacza, że kod jest uproszczona do
DbMigrator dbMigrator = new DbMigrator(new NAMESPACE.TO.MIGRATIONS.Configuration());
dbMigrator.Update(null);
Należy zauważyć, że jest to obecnie nieaktualne, RTM EF 4.3 zawiera nowy inicjator bazy danych o nazwie MigrateDatabaseToLatestVersion. Aby uzyskać więcej informacji, zobacz http://stackoverflow.com/questions/9281423/entity-framework-4-3-run-migrations-at-application-start. – Betty
Chociaż ustawienie inicjatora w konstruktorze kontekstu wydaje się zakłócać skrypty powłoki. Powróciłem do używania modułu app_start z powyższym kodem. – Betty