Hvis dit hovedmål er at oprette tabellerne først i databasen og derefter automatisk opdatere dit projekt, skal du bruge Database First.
Når det er sagt, skal du først overveje ulemperne ved Database:i min personlige erfaring holdt jeg op med at bruge den tilgang hovedsageligt af to grunde:
- Database First-support vil blive afbrudt, så vidt jeg ved. EF Core inkluderer ikke redigeringsværktøjet. Nogle links om dette:et indlæg fra Julie Lerman , EF Core roadmap , og en tidlig meddelelse fra Microsoft .
- Modeleditoren havde adskillige fejl og særheder, der fik koden til at blive ødelagt i ny og næ. Disse fejl bliver højst sandsynligt bare ikke rettet (se forrige punkt). Ting som at ændre typen af et eksisterende felt, ændre fremmednøgler osv.
- Jeg havde en masse problemer på grund af kildekodelagersammenlægninger af de automatisk genererede enhedsfiler. Især (men ikke kun), når flere personer arbejdede med de samme entiteter, så vi fik flettekonflikter i den autogenererede kode. Desuden blev den automatisk genererede kode nogle gange ikke tjekket ud korrekt, så den blev ude af synkronisering med edmx. Jeg er ikke sikker på, at det også sker for andre mennesker, men det ser ud til, at Visual Studio, editoren, værktøjet til automatisk kodegenerering i baggrunden og TFS-kildekodehåndteringen bare ikke fungerer godt sammen.
Så hvis du virkelig ikke kan leve uden at oprette først, fortsætter tabellerne i databasen med Database First, men du skal overveje, hvad du mister, hvis du ikke bruger Code First. Denne tilgang anbefales bredt af en grund.
Normalt er hovedårsagen til, at folk bruger Database First i dag, umuligheden af at migrere ældre kode til Code First-tilgangen. Så vidt jeg ved er det almindeligt accepteret, at Code First ellers er den rigtige vej at gå. Her har du et interessant indlæg om dette (selvom det er lidt gammelt, skrevet til EF 4.1, da Code First blev introduceret, handler det om de vigtigste fordele og ulemper ved hver tilgang).
En løsning for dig kunne være at blive ved med at bruge Code First, men også bruge de tilgængelige værktøjer, der automatisk genererer dine Code First-enheder ved at lave reverse engineering fra databasetabellerne. Med dette kan du stadig generere dine tabeller direkte i databasen, men bliv ved med at bruge Code First med migreringer og det hele. Her har du et indlæg fra Julie Lerman om nogle af disse værktøjer . Der kan være nyere værktøjer, men jeg har ikke brugt dem, og jeg kender dem ikke.
Bemærk:Min personlige erfaring med Database First var lidt dårlig og varede ikke for længe. Måske en person med mere positiv erfaring med denne tilgang kunne give mere nyttig indsigt om det. Jeg har brugt Code First i et stykke tid nu og foretrækker virkelig denne tilgang. Mit svar kan være lidt partisk.