Se seu objetivo principal é criar as tabelas primeiro no banco de dados e, em seguida, atualizar automaticamente seu projeto, você deve usar o Database First.
Dito isso, você deve considerar as desvantagens do Database First:na minha experiência pessoal, parei de usar essa abordagem principalmente por dois motivos:
- O suporte do Database First será descontinuado, até onde eu saiba. O EF Core não inclui a ferramenta de edição. Alguns links sobre isso:uma postagem de Julie Lerman , o roteiro do EF Core e um anúncio antecipado da Microsoft .
- O editor de modelos tinha vários bugs e peculiaridades que faziam com que o código fosse quebrado de vez em quando. Esses bugs provavelmente não serão corrigidos (veja o ponto anterior). Coisas como alterar o tipo de um campo existente, alterar chaves estrangeiras etc.
- Tive muitos problemas por causa das mesclagens do repositório de código-fonte dos arquivos de entidade gerados automaticamente. Especialmente (mas não apenas) quando várias pessoas estavam trabalhando com as mesmas entidades, então estávamos obtendo conflitos de mesclagem no código gerado automaticamente. Além disso, o código gerado automaticamente às vezes não estava sendo verificado corretamente, então ficou fora de sincronia com o edmx. Não tenho certeza se isso também acontece com outras pessoas, mas parece que às vezes o Visual Studio, o editor, a ferramenta de geração de código automático em segundo plano e o gerenciador de código-fonte TFS simplesmente não funcionam bem juntos.
Portanto, se você realmente não pode viver sem criar primeiro as tabelas no banco de dados, continue com o Database First, mas você deve considerar o que está perdendo se não usar o Code First. Essa abordagem é amplamente recomendada por um motivo.
Normalmente, a principal razão para as pessoas usarem o Database First hoje em dia é a impossibilidade de migrar o código legado para a abordagem do Code First. Até onde eu sei, é amplamente aceito que Code First é o caminho certo a seguir. Aqui você tem um post interessante sobre isso (mesmo que seja um pouco antigo, escrito para EF 4.1, quando Code First foi introduzido, trata dos principais prós e contras de cada abordagem).
Uma solução alternativa para você pode ser continuar usando o Code First, mas também usar as ferramentas disponíveis que geram automaticamente suas entidades do Code First fazendo engenharia reversa das tabelas do banco de dados. Com isso você ainda pode gerar suas tabelas diretamente no banco de dados, mas continue usando Code First com migrações e tudo mais. Aqui você tem uma postagem de Julie Lerman sobre algumas dessas ferramentas . Pode haver ferramentas mais recentes, mas não as usei e não as conheço.
Nota:minha experiência pessoal com o Database First foi meio ruim e não durou muito. Talvez alguém com experiência mais positiva nessa abordagem possa fornecer informações mais úteis sobre isso. Eu tenho usado o Code First por um tempo e realmente prefiro essa abordagem. Minha resposta pode ser um pouco tendenciosa.