Quem já trabalhou com Entity, sabe que existem 3 abordagens através do qual Entity framework é implementada.
- DataBase First
- Code First
- Model First
Destes, DB First e Code First são os mais utilizados. E neste artigo vou discutir estas duas abordagens.
Primeiro vamos entender o que é um e o que é o outro:
Code First : Neste modelo, vamos primeiro criar classes de entidade com as propriedades definidas na mesma. A estrutura de entidade irá criar o banco de dados e tabelas com base nas classes de entidade definidas. Assim a base de dados é gerada a partir do código.
Vantagens:
- Você pode criar o banco de dados e tabelas de seus objetos de negócios.
- Você pode especificar quais coleções relacionadas são carregadas, serializadas, ou não.
- Controle de versão de banco de dados.
- Bom para pequenas aplicações.
Desvantagens:
- Você tem que escrever tudo relacionado ao banco de dados nas suas classes de entidade.
- A utilização de stored procedures se torna um pouco mais trabalhosa, necessitando a utilização de Fluent API
- Se você quiser mudar algo no banco de dados, primeiro precisa alterar o código de classes de entidade e depois executar um update via package console.
DB First: Nesta abordagem de banco de dados, as tabelas são criadas em primeiro lugar. Em seguida, você cria entidade modelo de dados usando o banco de dados criado como base.
Vantagens:
- Simples para criar o modelo de dados dependendo do banco utilizado.
- Interface gráfica na criação de tabelas e estruturas.
- Mapeamento e criação de chaves e relacionamentos são fáceis, você não precisa ter que escrever qualquer código.
- Preferidos para grandes aplicações e/ou uso de dados intenso.
Desvantagens:
- Usando um banco de dados existente para gerar um arquivo de modelo .edmx pode se tornar uma grande dor de cabeça, com inúmeras classes desnecessárias.
Quando você precisa adicionar qualquer funcionalidade ao modelo gerado você tem que estender a classe modelo gerado.
Escolher a abordagem adequada é puramente baseado nas aplicações que estão em desenvolvimento, no seu modelo de negócio, na complexidade e tamanho.