Jeśli Twoim głównym celem jest utworzenie najpierw tabel w bazie danych, a następnie automatyczna aktualizacja projektu, powinieneś użyć Database First.
To powiedziawszy, musisz wziąć pod uwagę wady Database First:z mojego osobistego doświadczenia przestałem używać tego podejścia głównie z dwóch powodów:
- Obsługa bazy danych First zostanie przerwana, o ile wiem. EF Core nie zawiera narzędzia edytora. Kilka linków na ten temat:post od Julie Lerman , mapa drogowa EF Core oraz wczesne ogłoszenie firmy Microsoft .
- Edytor modeli miał kilka błędów i dziwactw, które powodowały, że od czasu do czasu kod był łamany. Te błędy najprawdopodobniej nie zostaną naprawione (patrz poprzedni punkt). Rzeczy takie jak zmiana typu istniejącego pola, zmiana kluczy obcych itp.
- Miałem wiele problemów z powodu łączenia repozytoriów kodu źródłowego automatycznie generowanych plików encji. Zwłaszcza (ale nie tylko), gdy kilka osób pracowało z tymi samymi podmiotami, przez co w automatycznie generowanym kodzie pojawiały się konflikty scalania. Ponadto, czasami automatycznie generowany kod nie był poprawnie sprawdzany, więc nie był zsynchronizowany z edmxem. Nie jestem pewien, czy zdarza się to również innym ludziom, ale wydaje się, że czasami Visual Studio, edytor, narzędzie do automatycznego generowania kodu w tle i menedżer kodu źródłowego TFS po prostu nie współpracują ze sobą.
Jeśli więc naprawdę nie możesz żyć bez tworzenia najpierw tabel w bazie danych, kontynuuj z Database First, ale musisz wziąć pod uwagę, co tracisz, jeśli nie używasz Code First. Takie podejście jest powszechnie zalecane z jakiegoś powodu.
Zwykle głównym powodem, dla którego ludzie używają obecnie Database First, jest niemożność migracji starszego kodu do podejścia Code First. O ile wiem, powszechnie przyjmuje się, że Code First to właściwy sposób na zrobienie czegoś innego. Tutaj masz ciekawy post na ten temat (nawet jeśli jest nieco stary, napisany dla EF 4.1, kiedy wprowadzono Code First, zajmuje się głównymi zaletami i wadami każdego podejścia).
Obejściem może być dalsze korzystanie z Code First, ale także korzystanie z dostępnych narzędzi, które automatycznie generują jednostki Code First, wykonując inżynierię wsteczną z tabel bazy danych. Dzięki temu nadal możesz generować tabele bezpośrednio w bazie danych, ale nadal używaj Code First z migracjami i wszystkim. Oto post od Julie Lerman na temat niektórych z tych narzędzi . Być może istnieją nowsze narzędzia, ale nie używałem ich i nie wiem o nich.
Uwaga:moje osobiste doświadczenia z Database First były dość złe i nie trwały zbyt długo. Być może ktoś z bardziej pozytywnym doświadczeniem w tym podejściu mógłby dać bardziej użyteczny wgląd na ten temat. Od jakiegoś czasu używam Code First i naprawdę wolę to podejście. Moja odpowiedź może być nieco stronnicza.