Quais as diferenças do EF6 para EF Core, será que vale a pena mudar?
Fala Devs, quanto tempo hein!
Bom estou de volta e pretendo voltar a postas artigos técnicos para vocês.
E ai já migrou para o Entity Framework Core? Sabe as diferenças com relação ao EF?
A intenção deste post é ajudar a você entender quais as principais diferenças e se vale a pena ou não migrar.
Se você ainda não sabe o que é Entity Framework é basicamente um ORM (mapeador de objeto relacional) para .Net.
Bom o EF apesar de ser muito bom, tinha algumas limitações e uma delas que era bem grave era funcionar em um servidor Linux.
Não sei se vocês sabem, mas uma hospedagem Linux é muito, mais muito mais barata que uma hospedagem Windows.
Por este motivo surgiram inúmeras tecnologias que eram suportadas em servidores Linux.
O EF tem um recurso muito útil que é trabalhar com dados espaciais, ou seja, existe um tipo de dado chamado DBGeometry e DBGeography que permite utilizar consultas se baseando em rotas, distancias de um ponto e outro e etc.
Este recurso tinha uma dependência de uma dll do Windows que não era suportada no Linux, por este motivo o EF Core não herdou este recurso.
Bom vou listar abaixo os recursos que cada um tem e compara-los, assim você pode tirar suas próprias conclusões
Criar um modelo
Recurso | EF 6 | EF Core |
---|---|---|
Mapeamento de classe básico | Sim | 1.0 |
Construtores com parâmetros | 2.1 | |
Conversões de valor da propriedade | 2.1 | |
Tipos mapeados sem chaves | 2.1 | |
Convenções | Sim | 1.0 |
Convenções personalizadas | Sim | 1.0 (parcial) |
Anotações de dados | Sim | 1.0 |
API fluente | Sim | 1.0 |
Herança: Tabela por hierarquia (TPH) | Sim | 1.0 |
Herança: Tabela por tipo (TPT) | Sim | |
Herança: Tabela por classe concreta (TPC) | Sim | |
Propriedades de estado sombra | 1.0 | |
Chaves alternativas | 1.0 | |
Muitos para muitos sem entidade de ingresso | Sim | |
Geração de chave: Banco de Dados | Sim | 1.0 |
Geração de chave: Cliente | 1.0 | |
Tipos complexos/de propriedade | Sim | 2.0 |
Dados espaciais | Sim | 2.2 |
Visualização gráfica do modelo | Sim | |
Editor de gráfico de modelo | Sim | |
Formato de modelo: Código | Sim | 1.0 |
Formato de modelo: EDMX (XML) | Sim | |
Criar modelo do banco de dados: Linha de comando | Sim | 1.0 |
Criar modelo do banco de dados: Assistente do VS | Sim | |
Atualizar modelo do banco de dados | Parcial | |
Filtros de consulta global | 2.0 | |
Divisão de tabela | Sim | 2.0 |
Divisão de entidade | Sim | |
Mapeamento de função escalar do banco de dados | Ruim | 2.0 |
Mapeamento de campo | 1.1 | |
Tipos de referência anuláveis (C# 8.0) | 3.0 |
Consultar dados
Recurso | EF6 | EF Core |
---|---|---|
Consultas LINQ | Sim | 1.0 (em andamento para consultas complexas) |
SQL gerado legível | Ruim | 1.0 |
Conversão de GroupBy | Sim | 2.1 |
Carregando dados relacionados: Adiantado | Sim | 1.0 |
Carregando dados relacionados: Carregamento adiantado para tipos derivados | 2.1 | |
Carregando dados relacionados: Ocioso | Sim | 2.1 |
Carregando dados relacionados: Explícito | Sim | 1.1 |
Consultas SQL brutas: Tipos de entidade | Sim | 1.0 |
Consultas SQL brutas: Tipos de entidade sem chave | Sim | 2.1 |
Consultas SQL brutas: Como compor com o LINQ | 1.0 | |
Consultas explicitamente compiladas | Ruim | 2.0 |
Linguagem de consulta baseada em texto (Entity SQL) | Sim | |
await foreach (C# 8.0) | 3.0 |
Salvar dados
Recurso | EF6 | EF Core |
---|---|---|
Controle de alterações: Instantâneo | Sim | 1.0 |
Controle de alterações: Notificação | Sim | 1.0 |
Controle de alterações: Proxies | Sim | |
Acesso ao estado controlado | Sim | 1.0 |
Simultaneidade otimista | Sim | 1.0 |
Transações | Sim | 1.0 |
Envio em lote de instruções | 1.0 | |
Mapeamento de procedimento armazenado | Sim | |
APIs de baixo nível de grafo desconectado | Ruim | 1.0 |
Gráfico desconectado ponta a ponta | 1.0 (parcial) |
Outros recursos
Recurso | EF6 | EF Core |
---|---|---|
Migrações | Sim | 1.0 |
APIs de criação/exclusão de banco de dados | Sim | 1.0 |
Dados de propagação | Sim | 2.1 |
Resiliência da conexão | Sim | 1.1 |
Ganchos de ciclo de vida (eventos, interceptação) | Sim | |
Registro em log simples (Database.Log) | Sim | |
Pool de DbContext | 2.0 |
Provedores de banco de dados
Recurso | EF6 | EF Core |
---|---|---|
SQL Server | Sim | 1.0 |
MySQL | Sim | 1.0 |
PostgreSQL | Sim | 1.0 |
Oracle | Sim | 1.0 |
SQLite | Sim | 1.0 |
SQL Server Compact | Sim | 1.0 (1) |
DB2 | Sim | 1.0 |
Firebird | Sim | 2.0 |
Jet (Microsoft Access) | 2.0 (1) | |
Cosmos DB | 3.0 | |
Na memória (para teste) | 1.0 |
1 Os provedores do SQL Server Compact e do Jet só funcionam no .NET Framework (não no .NET Core).
Implementações do .NET
Recurso | EF6 | EF Core |
---|---|---|
.NET Framework | Sim | 1.0 (removido no 3.0) |
.NET Core | Sim (adicionado no 6.3) | 1.0 |
Mono e Xamarin | 1.0 (em andamento) | |
UWP | 1.0 (em andamento) |
E ai, já utilizou o Entity Framework Core?
O que achou?
Deixe abaixo seu comentário!
Se quiser conhecer meus treinamentos é só acessar o link abaixo:
https://link.ilovecode.com.br/paulorogerio
About author
You might also like
Grátis – Crie Apps com Ionic 3 e WebApi em Asp.Net Core usando DDD
Share this on WhatsAppFala galera, beleza? Bom espero que sim! Conforme prometido, venho anunciar o meu novo curso onde ensino criar um aplicativo em Ionic 3 e no BackEnd criamos
Como evitar de executar dotnet run toda hora?
Share this on WhatsAppFala galera, pra quem desenvolve em .net e usa o prompt de comando para rodar sua aplicação, sabemos como é chato a cada alteração ter que rodar
Como obter o melhor de cada tecnologia
Share this on WhatsAppDescubra como achar as melhores referencias, frameworks, scripts e etc Fala galera, hoje resolvi escrever um post bem interessante onde irei ensinar como eu faço para descobrir
0 Comments
No Comments Yet!
You can be first to comment this post!