Als het uw belangrijkste doel is om eerst de tabellen in de database te maken en vervolgens uw project automatisch bij te werken, moet u Database First gebruiken.
Dat gezegd hebbende, moet je rekening houden met de nadelen van Database First:in mijn persoonlijke ervaring ben ik om twee redenen gestopt met het gebruik van die aanpak:
- Database First-ondersteuning wordt voor zover ik weet stopgezet. EF Core bevat niet de editor-tool. Enkele links hierover:een bericht van Julie Lerman , de EF Core-roadmap , en een vroege aankondiging van Microsoft .
- De modeleditor had verschillende bugs en eigenaardigheden die ervoor zorgden dat de code zo nu en dan werd verbroken. Deze bugs zullen hoogstwaarschijnlijk gewoon niet worden opgelost (zie vorige punt). Dingen zoals het wijzigen van het type van een bestaand veld, het wijzigen van externe sleutels, enz.
- Ik had veel problemen vanwege het samenvoegen van de broncoderepository van de automatisch gegenereerde entiteitsbestanden. Vooral (maar niet alleen) wanneer meerdere mensen met dezelfde entiteiten werkten, dus we kregen samenvoegconflicten in de automatisch gegenereerde code. Ook werd de automatisch gegenereerde code soms niet correct uitgecheckt, waardoor deze niet meer synchroon liep met de edmx. Ik weet niet zeker of dit ook bij andere mensen gebeurt, maar het lijkt erop dat Visual Studio, de editor, de tool voor het genereren van autocodes op de achtergrond en de TFS-broncodemanager soms gewoon niet goed samenwerken.
Dus als je echt niet kunt leven zonder eerst de tabellen in de database te maken, ga dan verder met Database First, maar je moet bedenken wat je verliest als je Code First niet gebruikt. Deze aanpak wordt algemeen aanbevolen met een reden.
Meestal is de belangrijkste reden voor mensen die tegenwoordig Database First gebruiken de onmogelijkheid om legacy-code te migreren naar de Code First-benadering. Voor zover ik weet is het algemeen aanvaard dat Code First de juiste manier is om het anders te doen. Hier heb je een interessant bericht hierover (zelfs als het een beetje oud is, geschreven voor EF 4.1, toen Code First werd geïntroduceerd, behandelt het de belangrijkste voor- en nadelen van elke benadering).
Een tijdelijke oplossing voor u zou kunnen zijn om Code First te blijven gebruiken, maar ook de beschikbare tools te gebruiken die automatisch uw Code First-entiteiten genereren door reverse-engineering uit te voeren vanuit de databasetabellen. Hiermee kun je nog steeds je tabellen direct in de database genereren, maar blijf Code First gebruiken met migraties en zo. Hier heb je een bericht van Julie Lerman over enkele van die tools . Er zijn misschien recentere tools, maar ik heb ze niet gebruikt en ik ken ze niet.
Opmerking:mijn persoonlijke ervaring met Database First was nogal slecht en duurde niet al te lang. Misschien kan iemand met meer positieve ervaring in deze benadering er meer nuttig inzicht over geven. Ik gebruik Code First nu al een tijdje en geef de voorkeur aan deze aanpak. Mijn antwoord is misschien wat bevooroordeeld.