EF Core 2.1 Roadmap

18 minuto(s) de leitura - February 09, 2018

01

Fala pessoal, tudo bem?! 💚

Conforme mencionado no anúncio do roteiro .NET Core 2.1 , hoje, neste momento, conhecemos a forma geral do nosso próximo lançamento e decidimos um cronograma geral para isso.
À medida que abordamos o lançamento de nossa primeira visualização no final deste mês, também queríamos expandir o que planejamos para o Entity Framework Core 2.1.


Novas características
Embora o EF Core 2.1 seja uma versão menor que se baseie no 2.0 funcional, introduz novas capacidades significativas:


Carregamento preguiçoso(LazyLoad): o EF Core agora contém os blocos de construção necessários para que qualquer pessoa escreva classes de entidades que possam carregar suas propriedades de navegação sob demanda. Também criamos um novo pacote.
Microsoft.EntityFrameworkCore.Proxies, que alavanca esses blocos de construção para produzir classes de proxy de carregamento preguiçoso com base em classes de entidade minimamente modificadas. Para usar esses proxies de carregamento preguiçoso, você só precisa de propriedades de navegação em suas entidades para serem virtuais.

Parâmetros em construtores de entidades: como um dos blocos de construção necessários para o carregamento preguiçoso, habilitamos a criação de entidades que tomam parâmetros em seu construtor.
Você pode usar parâmetros para injetar valores de propriedade, delegados de carga preguiçosa e serviços.

Conversões de valor: até agora, o EF Core só podia mapear propriedades de tipos suportados nativamente pelo provedor de banco de dados subjacente.
Os valores foram copiados de uma coluna entre colunas e propriedades sem qualquer transformação. Começando com o EF Core 2.1, as conversões de valores podem ser aplicadas para transformar os valores obtidos das colunas antes de serem aplicadas nas propriedades e vice-versa. Temos uma série de conversões que podem ser aplicadas por convenção conforme necessário, bem como uma API de configuração explícita que permite registrar delegados para as conversões entre colunas e propriedades.
Algumas das aplicações deste recurso são:

✅ Armazenando enums como string
✅ Mapeando inteiros não assinados com o SQL Server
✅Criptografia e decodificação transparentes de valores das propriedades

✅ Tradução do LINQ GroupBy: antes do EF Core 2.1, o operador do GroupBy LINQ sempre será avaliado na memória. Agora apoiamos a tradução para a cláusula SQL GROUP BY nos casos mais comuns.

✅ Semente de dados: com a nova versão, será possível fornecer dados iniciais para preencher um banco de dados. Ao contrário do EF6, no EF Core, os dados de semeadura estão associados a um tipo de entidade como parte da configuração do modelo. Então as migrações do EF Core podem calcular automaticamente quais operações de inserção, atualização ou exclusão precisam ser aplicadas ao atualizar o banco de dados para uma nova versão do modelo.

✅ Tipos de consulta: um modelo EF Core agora pode incluir tipos de consulta. Ao contrário dos tipos de entidade, os tipos de consulta não possuem chaves definidas neles e não podem ser inseridas, excluídas ou atualizadas (ou seja, são de somente leitura), mas elas podem ser retornadas diretamente por consultas.

✅ Alguns dos cenários de uso para tipos de consulta são:
    ðŸ‘‰ Mapeamento para modos de exibição sem chaves primárias
    ðŸ‘‰ Mapeamento para tabelas sem chaves primárias
    ðŸ‘‰ Mapeamento para consultas definidas no modelo
    ðŸ‘‰ Servindo como tipo de retorno para consultas FromSql()

✅ Incluir para tipos derivados: agora será possível especificar propriedades de navegação apenas definidas em tipos derivados ao escrever expressões para os métodos Include().
A sintaxe parece assim:
var query = context.People.Include(p => ((Student)p).School);
Suporte System.Transactions: adicionamos a capacidade de trabalhar com recursos do System.Transactions, como o TransactionScope. Isso funcionará tanto no .NET Framework quanto no .NET Core ao usar provedores de banco de dados que o suportam.

Outras melhorias e novas iniciativas além dos principais recursos novos incluídos no 2.1, fizemos inúmeras melhorias menores e reparamos mais de cem bugs de produtos. Também avançamos nas seguintes áreas:
Otimização de subconsultas correlacionadas: melhoramos a nossa tradução de consultas para evitar a execução de consultas SQL N + 1 em muitos cenários comuns em que uma consulta de raiz é unida com uma subconsulta correlacionada.

Ordem de coluna nas migrações: com base nos comentários dos clientes, atualizamos as migrações para inicialmente gerar colunas para tabelas na mesma ordem em que as propriedades são declaradas nas classes.

Visão geral do fornecedor de Cosmos DB: desenvolvemos um provedor EF Core para a API DocumentDB no Cosmos DB. Este é o primeiro provedor de banco de dados de documentos que produzimos, e as aprendizagens desse exercício irão informar melhorias no projeto da versão subseqüente após 2.1. O plano atual é publicar uma prévia prévia do fornecedor do Cosmos DB no período de tempo 2.1.

Exemplo de provedor Oracle para o EF Core: produzimos um provedor EF Core padrão para bancos de dados Oracle. O objetivo do projeto não é produzir um provedor EF Core de propriedade da Microsoft, mas para:
Ajude-nos a identificar lacunas na funcionalidade de base e base da EF Core, que precisamos abordar para melhor suportar a Oracle. Ajude a iniciar o desenvolvimento de outros provedores Oracle para o EF Core por Oracle ou por terceiros. Tenha em atenção que, actualmente, o nosso exemplo é baseado no último fornecedor ADO.NET disponível da Oracle, que só suporta o .NET Framework. Assim que um provedor ADO.NET para .NET Core estiver disponibilizado, consideraremos a atualização da amostra para usá-lo.
Está bem próximo!!!
Vamos lançar a primeira prévia do EF Core 2.1, incluindo todos os recursos mencionados acima, no final deste mês. Depois disso, pretendemos lançar visualizações adicionais mensalmente, e uma versão final no primeiro semestre de 2018.

Um grande agradecimento a todos que usam o EF Core e a todos os que ajudaram a tornar o lançamento 2.1 melhor, fornecendo feedback, informando erros e contribuindo com o código.


Fonte: https://blogs.msdn.microsoft.com/dotnet/2018/02/02/entity-framework-core-2-1-roadmap/

Deixe um comentário