Czy istnieją ustalone praktyki dotyczące sposobu, w jaki migracja widoków bazy danych może być pomyślnie obsługiwana w środowisku wielu programistów/wielu oddziałów (VCS)?Obsługa migracji widoków bazy danych w środowisku wielu deweloperów
Używamy biblioteki migracji bazy danych do wszystkich zmian schematów, ale napotkaliśmy problemy, gdy różni deweloperzy w różnych gałęziach kodu zmieniają ten sam widok, ale ich punkt początkowy był taki sam.
Każdy programista ma swoją własną kopię bazy danych, ale jako że widoki wymagają zwykle określenia całej definicji migracji, oznacza to, że gdy dojdziemy do uruchomienia migracji względem bazy danych pomostowej lub produkcyjnej, niezależnie od tego, która migracja widoku uruchom last zastępuje wszelkie zmiany wprowadzone w poprzednich widokach migracji.
Przykład:
- Zobacz aktualnie wygląda tak:
SELECT 'x'
. - Deweloper 1 uruchamia gałąź A i dodaje nową kolumnę. Ich migracja "w górę" wygląda następująco:
SELECT 'x', 'y'
. - Deweloper 2 uruchamia gałąź B i dodaje nową kolumnę. Ich migracja "w górę" wygląda następująco:
SELECT 'x', 'z'
. - Deweloper 2 kończy swój oddział jako pierwszy i przeprowadza migrację. Widok wygląda teraz jak
SELECT 'x', 'z'
. - Deweloper 1 kończy swoją gałąź i uruchamia migracje. Widok wygląda teraz na
SELECT 'x', 'y'
, a zmiany programisty 2 zostały utracone.
Może to być pomocne: http://stackoverflow.com/questions/13314725/migrations-in-entity-framework-in-a-collaborative-environment –
https://msdn.microsoft.com/en- nas/data/dn481501.aspx może być również pomocny (i jest powiązany z linkiem Steve'a Greene'a powyżej) – jjj