Mam dwa foldery do migracji (Autokontekst i UserProfileContext), każdy ma swoją własną migrację i niestandardowy sql do uruchomienia po migracji danych i tym podobne.Pierwsze migracje EF kodu nie są uruchomione po wdrożeniu na platformie Azure
Działa to dobrze, gdy używana jest konsola menedżera pakietów. I
- Restore z produkcji
- Run Update Database -ConfigurationTypeName Migrations.Auth.Configuration
- Run Update Database -ConfigurationTypeName Migrations.UserProfile.Configuration
Wtedy wszystko jest bardzo szczęśliwy w nowa baza danych, migracje wykonane dane przetasowane tam, gdzie trzeba.
Próbowałem przetestować migracje na opublikowanie utworu przez:
- Restore produkcję na bazie dev
- pojedynczy ciąg połączenia (wszystkie konteksty wykorzystywać takie same) wskazał dev baza danych,
- Publikowanie w błękicie strona internetowa
- sprawdzone pole dla Zastosuj kod najpierw Migracje
- dobrane, że ciąg pojedynczego połączenia
OK, opublikowano w porządku; jednak kiedy poszedłem do bazy danych, nic się nie stało! Nie utworzył niezbędnych tabel, kolumn ani przesunięć danych.
TLDR; Kod pierwsze migracje nie są wyświetlane po opublikować Azure
Update 1 Próbowałem dowolną kombinację poniżej: tylko jeden pojedynczy ciąg połączenia tak zgaduję, że nie jest to problem i wykonać migracje jest sprawdzone.
Po opublikowaniu api działa, ale nie wprowadzono żadnych zmian w bazie danych. Pomyślałem, że być może najpierw muszę to uderzyć, ale dostaję losowe błędy, gdy próbuję użyć api (która teraz oczywiście opiera się na nowej konfiguracji bazy danych), a baza danych wciąż nie jest zmieniona.
Widziałem kilka referencji na temat konieczności dodania czegoś do mojej klasy startowej, ale nie jestem pewien, jak postępować.
Aktualizacja 2 Rozwiązałem jeden problem dodając "Persist Security Info = True" do mojego ciągu połączenia. Teraz faktycznie łączy się z bazą danych i wywołuje mój interfejs API; jednak nie są przeprowadzane żadne migracje. Dołączyłem debuggera do środowiska programistycznego Azure i przejrzałem ... podczas pierwszego wywołania bazy danych, który wszedł w klasę konfiguracji dla danej migracji, a następnie nie mogę wykryć błędu w barfach.
public Configuration()
{
AutomaticMigrationsEnabled = false;
MigrationsDirectory = @"Migrations\Auth";
ContextKey = "AuthContext";
}
Update 3
Dobra, wykopał dół i po raz pierwszy trafi do bazy danych jesteśmy erroring. Tak, to ma sens, ponieważ model się zmienił, ale mam migracje na miejscu, włączone i sprawdzone! Ponownie, to działa dobrze, gdy działa „Update-Database” z konsoli menedżera pakietów, ale nie przy użyciu wykonać kod najpierw Migracje podczas publikowania do Azure
Model kopii kontekst „AuthContext” zmieniła się od bazy było stworzony. Rozważ skorzystanie z Code First Migrations w celu zaktualizowania bazy danych (http://go.microsoft.com/fwlink/?LinkId=238269).
Update 4 Ok znalazłem problem korzeniowy tutaj. VS konfiguruje dodatkowe atrybuty web.config dla databaseInitializer tylko w jednym z kontekstów bazy danych, ten, o którym nie wspomniano, jest w rzeczywistości trafiony przede wszystkim z mojej aplikacji.
Teraz muszę dowiedzieć się, jak uzyskać wiele kontekstów lub połączyć wszystkie moje rzeczy w jeden kontekst.
Czy wziąłeś al o tym poście http://blogs.msdn.com/b/webdev/archive/2014/04/09/ef-code-first-migrations-deployment-to-an-azure-cloud-service.aspx, wygląda możesz potrzebować dodać kod do kodu Application_Start Global.asax –
@JWDzięki, widziałem to, specjalnie dla usługi Cloud Azure i używam Witryny Azure, dla której podobno nie musisz robić nic więcej ... –
Myślę, że musisz się upewnić, że uruchomiono kod migracji bazy danych bez względu na to, jaki to jest projekt. –