Ok, mam zmaga się z tym na dzień teraz i tutaj jest rozwiązanie dla tych, którzy szukają odpowiedzi ...
jestem przy założeniu, że większość ludzi czyta ten post tutaj, ponieważ mają dużą DbContext klasy z wieloma właściwościami DbSet <> i ładowanie trwa długo. Prawdopodobnie pomyślałeś, że to ma sens, powinienem podzielić kontekst, ponieważ nie będę używać wszystkich dbsets naraz, a załaduję tylko "częściowy" kontekst oparty na sytuacji, w której potrzebuję to. Rozdzielacie je, tylko po to, aby się przekonać, że migracje z Code First nie wspierają waszego sposobu myślenia rewolucyjnego.
Pierwszym krokiem musiało być podzielenie kontekstów, następnie dodano klasę MigrationConfiguration dla każdego nowego kontekstu, dodaliśmy łańcuchy połączeń o nazwach dokładnie takich samych, jak nowe klasy Context.
Potem próbowali uruchomiony niedawno rozstali się konteksty jeden po drugim, wykonując Add-Migration Context1 następnie robi update-Database -verbose ...
Wszystko wydawało się działać prawidłowo, ale można zauważyć, że każdy kolejny Migracja usunęła wszystkie tabele z poprzedniej migracji i opuściła tabele tylko od ostatniej migracji.
Dzieje się tak, ponieważ bieżący model migracji oczekuje pojedynczego dbContext na bazę danych i musi być dopasowany do lustra.
To, co próbowałem, a ktoś zaproponował, aby to zrobić, to stworzyć pojedynczy SuperContext, który zawiera wszystkie zestawy Db. Utwórz pojedynczą klasę konfiguracji migracji i uruchom ją. Pozostaw częściowe klasy kontekstu w miejscu i spróbuj je zainicjować i użyć. EF skarży się, że model wsparcia się zmienił. Ponownie, dzieje się tak dlatego, że EF porównuje częściowy kontekst dbcontext z podpisem kontekstu All-Sets, który pozostał po migracji Super Context.
Jest to poważna usterka w mojej opinii.
W moim przypadku zdecydowałem, że WYDAJność jest ważniejsza niż migracje. Tak więc, co robiłem, to po uruchomieniu w kontekście Super i miałem wszystkie tabele w miejscu, poszedłem do bazy danych i ręcznie usunięto tabelę _MigrationHistory.
Teraz mogę tworzyć i wykorzystywać moje Kontekstowe konteksty bez narzekania na EF. Nie znajduje się tabela MigrationHistory i po prostu przechodzi dalej, co pozwala mi mieć "częściowy" widok bazy danych.
Oczywiście chodzi o to, że wszelkie zmiany w modelu będą musiały być ręcznie propagowane do bazy danych, więc należy zachować ostrożność.
To zadziałało jednak dla mnie.
To bardzo interesujące pytanie. Zastanawiam się, czy obsługa wielu kontekstów była częścią przypadków użycia migracji. –
Bardzo wątpię, że wiele kontekstów może działać z automatycznymi migracjami, ma na celu aktualizację db, aby wyglądał jak kontekst bez względu na wszystko. Możesz mieć więcej szczęścia w rozwijaniu wtyczek za pomocą migracji ręcznych, w oddzielnych bazach danych do generowania migracji, a następnie zastosować je wszystkie do tej samej bazy danych. – Betty
W międzyczasie zajrzałem do zespołów EF 4.3 i mam także wątpliwości, czy ramy migracji mogą poradzić sobie z kilkoma kontekstami. Ale nie ma żadnego powodu technicznego, który mógłbym wymyślić. Po wprowadzeniu modelu EDM można go odróżnić od bazy danych, znaleźć istniejące tabele tabel, utworzyć lub zmienić i pozostawić scenariusz usunięcia przez ręczne migracje do użytkownika. –