Jaki jest najlepszy sposób na wykonanie wszystkich wymaganych migracji db przy uruchomieniu aplikacji z EF 4.3?Framework Entity 4.3 uruchamia migracje przy uruchomieniu aplikacji
Odpowiedz
Najlepszym sposobem jest użycie nowego inicjalizatora MigrateDatabaseToLatestVersion
.
Database.SetInitializer<YourContext>(
new MigrateDatabaseToLatestVersion<YourContext, YourMigrationsConfig>());
Database.Initialize(false);
Gdzie ten kod ma zostać umieszczony? Nie można używać Database.Initialize w App_Start, ponieważ nie można go użyć w statycznym kontekście. –
@ MaximV.Pavlov: Spróbuj dodać go do konstruktora statycznego w twoim kontekście. –
@ LadislavMrnka: jaki jest cel 'Database.Initialize (false);'? Z moich testów z 'MigrateDatabaseToLatestVersion', baza danych jest tworzona, rozstawiana i aktualizowana do najnowszej wersji bez tego drugiego Inicjowania połączenia. (w EF5 ...) – demoncodemonkey
Wielki opis opcji konfiguracyjnych EF 4.3 można znaleźć na stronie EF 4.3 Configuration File Settings na blogu zespołu ADO.NET. W ostatniej sekcji opisano inicjatory bazy danych, w tym nowy inicjator Code First MigrateDatabaseToLatestVersion
.
Mimo że Entity Framework - podobnie jak wiele innych funkcji .NET 4.x - preferuje konwencję nad konfiguracją, jest to jeden z przypadków, w którym może być bardzo przydatne ustawienie inicjatora bazy danych MigrateDatabaseToLatestVersion
poprzez plik konfiguracyjny aplikacji, a nie jawny kod do twojej aplikacji.
Podczas korzystania z konfiguracji zwróć także uwagę na mój komentarz do tego posta, aby konfiguracja była bardziej czytelna. – Rudi
Musiałem to zrobić jawnie, ponieważ używam kontekstu uber do migracji, będącego nadzbiorem innych migracji. Kluczem bit jest:
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(
new Lcmp.EF.Migrations.Migrations.Configuration());
dbMigrator.Update();
Z odrobiną rejestrowania ELMAH, właściwie to wykorzystać, zwany od Application_Start(). Kawałki tego są skradzione pomysłom innych. Nie jestem przekonany, że konieczna jest blokada z gwintem.
public static int IsMigrating = 0;
private static void UpdateDatabase()
{
try
{
if (0 == System.Threading.Interlocked.Exchange(ref IsMigrating, 1))
{
try
{
// Automatically migrate database to catch up.
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("Checking db for pending migrations.")));
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(new Lcmp.EF.Migrations.Migrations.Configuration());
var pendingMigrations = string.Join(", ", dbMigrator.GetPendingMigrations().ToArray());
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("The database needs these code updates: " + pendingMigrations)));
dbMigrator.Update();
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("Done upgrading database.")));
}
finally
{
System.Threading.Interlocked.Exchange(ref IsMigrating, 0);
}
}
}
catch (System.Data.Entity.Migrations.Infrastructure.AutomaticDataLossException ex)
{
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
catch (Exception ex)
{
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
}
- 1. Entity Framework 4.3 Migracje przenoszą istniejące dane
- 2. Entity Framework 4.3 nie tworzy bazy danych
- 3. Entity Framework 4.3. Nieprawidłowa nazwa kolumny "CreatedOn"
- 4. Maksymalny rozmiar puli napotkany przy pomocy Entity Framework 4.3
- 5. Migracje Entity Framework przestały wykrywać aktualizacje POCO
- 6. Entity Framework 4.3 vs. 5.0 Aktualizowanie różnic
- 7. Tworzenie repozytorium przy użyciu Entity Framework Code First 4.3
- 8. Migracje Entity Framework - Zarządzanie w Oddziałach
- 9. Entity Framework Core 1.0 pierwsze migracje przy użyciu kodu?
- 10. Jakie polecenia Entity Framework 6 umożliwiają migracje?
- 11. Entity Framework 4.3 - mapowanie TPH i błąd migracji
- 12. Entity Framework Migracje nie obejmują DefaultValue adnotacji danych (EF5RC)
- 13. Awaria aplikacji przy uruchomieniu
- 14. Kod Entity Framework 4.3 Najpierw nie można utworzyć Datetime2?
- 15. Najlepszy sposób na przyrostowe osadzanie danych w Entity Framework 4.3
- 16. Entity Framework Code First Migracje: Set Primary Key Value
- 17. Używanie kodu Entity Framework Pierwsze migracje w projekcie DVCS
- 18. LoadProperty w Entity Framework 5
- 19. Baza zapytań Persist Entity Framework
- 20. Debugowanie aplikacji iOS przy pierwszym uruchomieniu
- 21. Walidacja UI Entity Framework przy użyciu WinForms
- 22. Wywoływanie migracji EF przy uruchomieniu aplikacji za pomocą kodu
- 23. Entity Framework 4.1 Linq Zawiera i uruchamia z
- 24. Wyjątki dla Entity Framework Code First Migrations
- 25. Entity Framework 5 oczekuje, że kolumna CreatedOn z tabeli MigrationHistory
- 26. błąd zmiana modelu Entity Framework
- 27. wybrania wszystkich wierszy przy użyciu Entity Framework
- 28. Jak korzystać z migracji na istniejącej db w produkcji utworzonej przy użyciu Entity Framework 4.1?
- 29. Entity Framework i Równoległość
- 30. Kod obiektu Entity Framework first unique column
Czy masz na myśli uciekać od kodu? Oto link, który możesz obejrzeć http://romiller.com/2012/02/09/running-scripting-migrations-from-code/ –