Si su objetivo principal es crear las tablas primero en la base de datos y luego actualizar automáticamente su proyecto, entonces debe usar Primero la base de datos.
Dicho esto, debe considerar los inconvenientes de Database First:en mi experiencia personal, dejé de usar ese enfoque principalmente por dos razones:
- Se interrumpirá la compatibilidad con Database First, hasta donde yo sé. EF Core no incluye la herramienta de edición. Algunos enlaces sobre esto:una publicación de Julie Lerman , el hoja de ruta de EF Core y un anuncio anticipado de Microsoft .
- El editor de modelos tenía varios errores y peculiaridades que provocaban que el código se rompiera de vez en cuando. Lo más probable es que estos errores simplemente no se solucionen (consulte el punto anterior). Cosas como cambiar el tipo de un campo existente, cambiar claves foráneas, etc.
- Tuve muchos problemas debido a las fusiones del repositorio de código fuente de los archivos de entidad generados automáticamente. Especialmente (pero no solo) cuando varias personas trabajaban con las mismas entidades, por lo que teníamos conflictos de fusión en el código generado automáticamente. Además, el código generado automáticamente a veces no se verificaba correctamente, por lo que no estaba sincronizado con el edmx. No estoy seguro de que esto también le suceda a otras personas, pero parece que a veces Visual Studio, el editor, la herramienta de generación de código automático en segundo plano y el administrador de código fuente de TFS simplemente no funcionan bien juntos.
Entonces, si realmente no puede vivir sin crear primero las tablas en la base de datos, continúe con Database First, pero debe considerar lo que está perdiendo si no usa Code First. Este enfoque es ampliamente recomendado por una razón.
Por lo general, la razón principal por la que las personas usan Database First hoy en día es la imposibilidad de migrar el código heredado al enfoque de Code First. Por lo que sé, se acepta ampliamente que Code First es el camino correcto para ir de otra manera. Aquí tienes una publicación interesante sobre esto (incluso si es un poco antiguo, escrito para EF 4.1, cuando se introdujo Code First, trata los principales pros y contras de cada enfoque).
Una solución para usted podría ser seguir usando Code First pero también usar las herramientas disponibles que generan automáticamente sus entidades de Code First haciendo ingeniería inversa a partir de las tablas de la base de datos. Con esto, aún puede generar sus tablas directamente en la base de datos, pero siga usando Code First con migraciones y todo. Aquí tienes una publicación de Julie Lerman sobre algunas de esas herramientas . Puede haber herramientas más recientes, pero no las he usado y no las conozco.
Nota:mi experiencia personal con Database First fue un poco mala y no duró demasiado. Quizás alguien con una experiencia más positiva en este enfoque podría dar una idea más útil al respecto. He estado usando Code First por un tiempo y realmente prefiero este enfoque. Mi respuesta puede ser un poco sesgada.