Pokud je vaším hlavním cílem nejprve vytvořit tabulky v databázi a poté automaticky aktualizovat váš projekt, měli byste použít Database First.
To znamená, že musíte zvážit nevýhody Database First:podle mé osobní zkušenosti jsem tento přístup přestal používat hlavně ze dvou důvodů:
- Podpora databáze First bude ukončena, pokud vím. EF Core neobsahuje nástroj editoru. Některé odkazy na toto téma:příspěvek od Julie Lerman , cestovní mapa EF Core a časné oznámení společnosti Microsoft .
- Editor modelu měl několik chyb a zvláštností, které způsobovaly, že se kód každou chvíli rozbil. Tyto chyby s největší pravděpodobností jen nebudou opraveny (viz předchozí bod). Věci jako změna typu existujícího pole, změna cizích klíčů atd.
- Měl jsem spoustu problémů kvůli slučování úložiště zdrojového kódu automaticky generovaných souborů entit. Zvláště (ale nejenom), když několik lidí pracovalo se stejnými entitami, takže jsme dostávali konflikty sloučení v automaticky generovaném kódu. Automaticky vygenerovaný kód také někdy nebyl správně odhlášen, takže se nesynchronizoval s edmx. Nejsem si jistý, zda se to stává i jiným lidem, ale zdá se, že někdy Visual Studio, editor, nástroj pro generování automatického kódu na pozadí a správce zdrojového kódu TFS prostě nefungují dobře.
Takže pokud opravdu nemůžete žít bez prvního vytvoření, tabulky v databázi pokračujte s Database First, ale musíte zvážit, o co přicházíte, pokud nepoužíváte Code First. Tento přístup je široce doporučován z nějakého důvodu.
Obvykle je hlavním důvodem, proč lidé dnes používají Database First, nemožnost migrovat starší kód na přístup Code First. Pokud vím, je všeobecně přijímáno, že Code First je správný způsob, jak jít jinak. Zde máte zajímavý příspěvek o tomto (i když je trochu starý, napsaný pro EF 4.1, kdy byl Code First představen, zabývá se hlavními klady a zápory každého přístupu).
Řešením pro vás může být nadále používat Code First, ale také používat dostupné nástroje, které automaticky generují vaše entity Code First pomocí zpětného inženýrství z databázových tabulek. Díky tomu můžete stále generovat své tabulky přímo v databázi, ale pokračujte v používání Code First s migracemi a vším. Zde máte příspěvek od Julie Lerman o některých z těchto nástrojů . Možná existují novější nástroje, ale já je nepoužívám a nevím o nich.
Poznámka:moje osobní zkušenost s Database First byla poněkud špatná a netrvala příliš dlouho. Možná by někdo s pozitivnějšími zkušenostmi s tímto přístupem mohl poskytnout užitečnější informace o tom. Již nějakou dobu používám Code First a opravdu preferuji tento přístup. Moje odpověď může být trochu zaujatá.