Versões anteriores do Entity Framework

A primeira versão do Entity Framework foi lançada em 2008 como parte do .NET Framework 3.5 SP1 e do Visual Studio 2008 SP1.

Da versão EF4.1 em diante, ele é enviado como o Pacote NuGet do EntityFramework – atualmente um dos pacotes mais populares em NuGet.org.

Entre as versões 4.1 e 5.0, o pacote NuGet do EntityFramework estendeu as bibliotecas do EF fornecidas como parte do .NET Framework.

A partir da versão 6, o EF se tornou um projeto de código aberto e foi totalmente separado do .NET Framework. Isso significa que quando adiciona o pacote NuGet do EntityFramework versão 6 a um aplicativo, você obtém uma cópia completa da biblioteca do EF que não depende dos componentes do EF fornecidos como parte do .NET Framework. Isso ajudou a acelerar o ritmo de desenvolvimento e entrega de novos recursos.

Em junho de 2016, lançamos o EF Core 1.0. O EF Core é baseado em uma nova base de código e foi projetado como uma versão mais leve e extensível do EF. Atualmente, o EF Core é o foco principal de desenvolvimento para a equipe do Entity Framework na Microsoft. Isso significa que não há novos recursos principais planejados para o EF6. No entanto, o EF6 ainda é mantido como um projeto de código aberto e um produto da Microsoft com suporte.

Aqui está a lista de versões anteriores, em ordem cronológica inversa, com informações sobre os novos recursos que foram introduzidos em cada versão.

Atualização de ferramentas do EF no Visual Studio 2017 15.7

Em maio de 2018, lançamos uma versão atualizada das ferramentas do EF como parte do Visual Studio 2017 15.7. Ela inclui melhorias para alguns pontos de problemas comuns:

  • Correções para vários bugs de acessibilidade da interface do usuário
  • Solução alternativa para a regressão de desempenho do SQL Server ao gerar modelos de bancos de dados existentes #4
  • Suporte para atualizar modelos maiores no SQL Server #185

Outra melhoria nessa nova versão das ferramentas do EF é a instalação do runtime do EF 6.2 quando um modelo é criado em um novo projeto. Com versões mais antigas do Visual Studio, é possível usar o runtime do EF 6.2 (bem como qualquer versão anterior do EF) instalando a versão correspondente do pacote NuGet.

EF 6.2.0

O runtime do EF 6.2 foi lançado para o NuGet em outubro de 2017. Graças, em grande parte, aos esforços de nossa comunidade de colaboradores de software livre, o EF 6.2 inclui várias correções de bugs e aprimoramentos de produtos.

Aqui está uma lista resumida das alterações mais importantes que afetam o runtime do EF 6.2:

  • Redução do tempo de inicialização carregando modelos do Code First concluídos de um cache persistente #275
  • API fluente para definir índices #274
  • DbFunctions.Like() para habilitar a gravação de consultas LINQ que são traduzidas como LIKE no SQL #241
  • Agora Migrate.exe é compatível com a opção -script #240
  • Agora o EF6 pode trabalhar com valores de chave gerados por uma sequência no SQL Server #165
  • Atualização da lista de erros transitórios para a estratégia de execução do SQL Azure n#83
  • Bug: a repetição de consultas ou comandos SQL falha com "O SqlParameter já está contido em outro SqlParameterCollection" #81
  • Bug: a avaliação de DbQuery.ToString() frequentemente atinge o tempo limite no depurador #73

EF 6.1.3

O runtime do EF 6.1.3 foi lançado para o NuGet em outubro de 2015. Esta versão contém apenas correções para regressões e defeitos de alta prioridade relatados na versão 6.1.2. Essas correções incluem:

  • Consulta: Regressão no EF 6.1.2: OUTER APPLY introduzido e consultas mais complexas para relações 1:1 e cláusula “let”
  • Problema de TPT ao ocultar propriedade de classe base na classe herdada
  • DbMigration.Sql falha quando a palavra ‘go’ está contida no texto
  • Criar sinalizador de compatibilidade para suporte de nivelamento de UnionAll e Intersect
  • A consulta com várias inclusões não funciona na versão 6.1.2 (funcionando na versão 6.1.1)
  • Exceção “Você tem um erro na sintaxe do SQL” após a atualização do EF 6.1.1 para 6.1.2

EF 6.1.2

O runtime do EF 6.1.2 foi lançado para o NuGet em dezembro de 2014. Essa versão é principalmente sobre correções de bug. Também aceitamos algumas sugestões de alterações notáveis pelos membros da comunidade:

  • Os parâmetros de cache de consulta podem ser configurados do arquivo app/web.configuration
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • Métodos SqlFile e SqlResource no DbMigration permitem que você execute um script SQL armazenado como um arquivo ou recurso inserido.

EF 6.1.1

O runtime do EF 6.1.1 foi lançado para o NuGet em dezembro de 2014. Esta versão contém correções para problemas que várias pessoas encontraram. Entre outros:

  • Designer: Erro ao abrir o EF5 edmx com precisão decimal no designer do EF6
  • A lógica de detecção de instância padrão para LocalDB não funciona com o SQL Server 2014

EF 6.1.0

O runtime do EF 6.1.0 foi lançado para o NuGet em março de 2014. Essa pequena atualização inclui um número significativo de novos recursos:

  • A consolidação de ferramentas fornece uma maneira consistente de criar um modelo de EF. Esse recurso estende o assistente de Modelo de Dados de Entidade ADO.NET para dar suporte à criação de modelos Code First, incluindo engenharia reversa de um banco de dados existente. Esses recursos estavam disponíveis anteriormente na qualidade Beta no EF Power Tools.
  • O tratamento de falhas de confirmação de transação oferece o CommitFailureHandler, que usa a capacidade recém-introduzida de interceptar operações de transação. O CommitFailureHandler permite a recuperação automática de falhas de conexão ao confirmar uma transação.
  • IndexAttribute permite que os índices sejam especificados colocando um atributo [Index] em uma propriedade (ou propriedades) em seu modelo Code First. O Code First criará um índice correspondente no banco de dados.
  • A API de mapeamento pública fornece acesso às informações que o EF tem sobre como as propriedades e os tipos são mapeados para colunas e tabelas no banco de dados. Em versões anteriores, essa API era interna.
  • A capacidade de configurar interceptadores por meio do arquivo App/Web.config permite que interceptores sejam adicionados sem recompilar o aplicativo.
  • System.Data.Entity.Infrastructure.Intercept.DatabaseLogger é um novo interceptor que facilita o registro em log de todas as operações de banco de dados em um arquivo. Em combinação com o recurso anterior, isso permite a você ativar facilmente o registro em log de operações de banco de dados para um aplicativo implantado, sem a necessidade de recompilar.
  • A detecção de alterações do modelo de migrações foi aprimorada para que as migrações com scaffold sejam mais precisas. O desempenho do processo de detecção de alterações também foi aprimorado.
  • Aprimoramentos de desempenho incluindo operações de banco de dados reduzidas durante a inicialização, otimizações para comparação de igualdade nula em consultas LINQ, geração de exibição mais rápida (criação de modelo) em mais cenários e materialização mais eficiente de entidades controladas com várias associações.

EF 6.0.2

O runtime do EF 6.0.2 foi lançado para o NuGet em dezembro de 2013. Essa versão de patch é limitada à correção de problemas que foram introduzidos na versão EF6 (regressões no desempenho/comportamento desde o EF5).

EF 6.0.1

O runtime do EF 6.0.1 foi lançado para o NuGet em outubro de 2013 simultaneamente com o EF 6.0.0, porque esse último foi inserido em uma versão do Visual Studio que havia sido bloqueada alguns meses antes. Essa versão de patch é limitada à correção de problemas que foram introduzidos na versão EF6 (regressões no desempenho/comportamento desde o EF5). As alterações mais importantes foram corrigir alguns problemas de desempenho durante o aquecimento para modelos de EF. Isso foi importante, pois o desempenho de aquecimento era uma área de foco no EF6 e essas questões estavam negando alguns dos outros ganhos de desempenho obtidos no EF6.

EF 6.0

O runtime do EF 6.0.0 foi lançado para o NuGet em outubro de 2013. Essa é a primeira versão na qual um runtime completo do EF é incluído no Pacote NuGet do EntityFramework que não depende dos componentes do EF que fazem parte do .NET Framework. Mover as partes restantes do runtime para o pacote NuGet exigiu uma série de alterações interruptivas no código existente. Consulte a seção sobre Como atualizar para o Entity Framework 6 para obter mais detalhes sobre as etapas manuais necessárias para atualizar.

Essa versão inclui vários novos recursos. Os seguintes recursos funcionam para modelos criados com o Code First ou o EF Designer:

  • A consulta e o salvamento assíncronos adicionam suporte para os padrões assíncronos baseados em tarefa que foram introduzidos no .NET 4.5.
  • A Resiliência de Conexão permite a recuperação automática após falhas transitórias de conexão.
  • A configuração baseada em código oferece a opção de realizar a configuração (que tradicionalmente era realizada em um arquivo de configuração) no código.
  • A resolução de dependência introduz suporte para o padrão Localizador de serviço, e removemos algumas partes da funcionalidade que podem ser substituídas por implementações personalizadas.
  • O registro em log de interceptação/SQL fornece blocos de construção de baixo nível para interceptação de operações de EF com registro em log SQL simples criado na parte superior.
  • Os aprimoramentos na capacidade de teste facilitam a criação de duplicatas de teste para DbContext e DbSet ao usar uma simulação de estrutura ou escrever suas duplicatas de teste.
  • DbContext agora pode ser criado com uma DbConnection que já está aberta, o que permite cenários em que seria útil se a conexão pudesse estar aberta ao criar o contexto (como compartilhar uma conexão entre componentes quando você não pode garantir o estado da conexão).
  • O suporte aprimorado à transação fornece suporte para uma transação externa à estrutura, bem como maneiras aprimoradas de criar uma transação dentro do Framework.
  • Enumerações, espacial e melhor desempenho no .NET 4.0 – movendo os componentes principais que costumavam estar no .NET Framework para o pacote NuGet do EF, agora podemos oferecer suporte a enumeração, tipos de dados espaciais e aprimoramentos de desempenho do EF5 no .NET 4.0.
  • Desempenho aprimorado de Enumerable.Contains em consultas LINQ.
  • Tempo de aquecimento aprimorado (geração de exibição), especialmente para modelos grandes.
  • Pluralização plugável e serviço de singularização.
  • Implementações personalizadas de Equals ou GetHashCode em classes de entidade agora têm suporte.
  • DbSet.AddRange/RemoveRange fornece uma maneira otimizada de adicionar ou remover várias entidades de um conjunto.
  • DbChangeTracker.HasChanges fornece uma maneira fácil e eficiente de ver se há alterações pendentes a serem salvas no banco de dados.
  • SqlCeFunctions fornece um SQL Compact equivalente ao SqlFunctions.

Os seguintes recursos se aplicam somente ao Code First:

  • As convenções personalizadas de Code First permitem escrever suas convenções para ajudar a evitar uma configuração repetitiva. Fornecemos uma API simples para convenções leves, bem como alguns blocos de construção mais complexos para permitir que você crie convenções mais complicadas.
  • O mapeamento Code First para procedimentos armazenados de Insert/Update/Delete agora tem suporte.
  • Os scripts de migrações idempotentes permitem que você gere um script SQL que possa atualizar um banco de dados em qualquer versão até a versão mais recente.
  • A tabela Histórico de Migrações configurável permite personalizar a definição da tabela Histórico de Migrações. Isso é particularmente útil para provedores de banco de dados que exigem que os tipos de dados apropriados etc. sejam especificados para que a tabela Histórico de Migrações funcione corretamente.
  • O recurso de vários contextos por banco de dados remove a limitação anterior de um modelo Code First por banco de dados ao usar migrações ou quando o Code First criou automaticamente o banco de dados para você.
  • DbModelBuilder.HasDefaultSchema é uma nova API Code First que permite que o esquema de banco de dados padrão para um modelo Code First seja configurado em um só lugar. Anteriormente, o esquema padrão Code First era embutido em código para "dbo" e a única maneira de configurar o esquema ao qual uma tabela pertencia era por meio da API ToTable.
  • O método DbModelBuilder.Configurations.AddFromAssembly permite que você adicione facilmente todas as classes de configuração definidas em um assembly quando estiver usando classes de configuração com a API Fluent Code First.
  • As operações de migrações personalizadas permitem a você adicionar outras operações a serem usadas em suas migrações baseadas em código.
  • O nível de isolamento de transação padrão é alterado para READ_COMMITTED_SNAPSHOT para bancos de dados criados usando Code First, permitindo mais escalabilidade e menos deadlocks.
  • Tipos complexos e de entidade agora podem ser aninhados dentro de classes.

EF 5.0

O runtime do EF 5.0.0 foi lançado para o NuGet em agosto de 2012. Esta versão apresenta alguns novos recursos, incluindo suporte a enumeração, funções com valor de tabela, tipos de dados espaciais e vários aprimoramentos de desempenho.

O Entity Framework Designer no Visual Studio 2012 também introduz suporte para vários diagramas por modelo, coloração de formas na superfície de design e importação em lote de procedimentos armazenados.

Aqui está uma lista de conteúdo que reunimos especificamente para a versão do EF 5:

EF 4.3.1

O runtime do EF 4.3.1 foi lançado para o NuGet em fevereiro de 2012, logo após o EF 4.3.0. Esta versão de patch incluiu algumas correções de bug para a versão EF 4.3 e introduziu um melhor suporte do LocalDB para clientes que usam o EF 4.3 com o Visual Studio 2012.

Aqui está uma lista de conteúdo que reunimos especificamente para a versão EF 4.3.1. A maior parte do conteúdo fornecido para o EF 4.1 ainda se aplica também ao EF 4.3:

EF 4.3

O runtime do EF 4.3.0 foi lançado para o NuGet em fevereiro de 2012. Esta versão incluiu o novo recurso Migrações Code First que permite que um banco de dados criado por Code First seja alterado incrementalmente à medida que o modelo Code First evolui.

Aqui está uma lista de conteúdo que reunimos especificamente para a versão EF 4.3. A maior parte do conteúdo fornecido para o EF 4.1 ainda se aplica também ao EF 4.3:

EF 4.2

O runtime do EF 4.2.0 foi lançado para o NuGet em novembro de 2011. Esta versão inclui correções de bug para a versão EF 4.1.1. Como esta versão incluía apenas correções de bugs, poderia ter sido a versão de patch EF 4.1.2, mas optamos por mudar para 4.2 para nos afastar dos números de versão de patch baseados em data que usamos nas versões 4.1.x e adotar o padrão de controle de versão semântico.

Aqui está uma lista de conteúdo que reunimos especificamente para a versão EF 4.2. O conteúdo fornecido para o EF 4.1 ainda se aplica também ao EF 4.2:

EF 4.1.1

O runtime do EF 4.1.10715 foi lançado para o NuGet em julho de 2011. Além das correções de bug, essa versão de patch introduziu alguns componentes para facilitar o trabalho das ferramentas de tempo de design com um modelo Code First. Esses componentes são usados pelas Migrações Code First (incluídas no EF 4.3) e pelo EF Power Tools.

Você observará o número de versão incomum do pacote, 4.1.10715. Costumávamos usar versões de patch baseadas em data antes de decidirmos adotar o controle de versão semântico. Pense nessa versão como patch 1 do EF 4.1 (ou EF 4.1.1).

Aqui está uma lista de conteúdo que reunimos para a versão do EF 4.1.1:

EF 4.1

O runtime do EF 4.1.10331 foi o primeiro a ser publicado no NuGet, em abril de 2011. Esta versão incluiu a API DbContext simplificada e o fluxo de trabalho Code First.

Você observará o número de versão incomum, 4.1.10331, que na realidade deveria ter sido 4.1. Além disso, há uma versão 4.1.10311 que deveria ter sido 4.1.0-rc (o ‘rc’ significa versão ’Release Candidate’). Costumávamos usar versões de patch baseadas em data antes de decidirmos adotar o controle de versão semântico.

Aqui está uma lista de conteúdo que reunimos para a versão do EF 4.1. Grande parte dele ainda se aplica a versões posteriores do Entity Framework:

EF 4.0

Esta versão foi incluída no .NET Framework 4 e no Visual Studio 2010, em abril de 2010. Novos recursos importantes nesta versão incluíram suporte a POCO, mapeamento de chave estrangeira, carregamento lento, aprimoramentos de testabilidade, geração de código personalizável e o fluxo de trabalho Model First.

Embora tenha sido a segunda versão do Entity Framework, ela foi nomeada EF 4 para se alinhar com a versão do .NET Framework com a qual ela foi fornecida. Após essa versão, começamos a disponibilizar o Entity Framework no NuGet e adotamos o controle de versão semântico, pois não estávamos mais vinculados à versão do .NET Framework.

Observe que algumas versões subsequentes do .NET Framework foram enviadas com atualizações significativas para as partes do EF incluídas. Na verdade, muitos dos novos recursos do EF 5.0 foram implementados como aprimoramentos nessas partes. No entanto, para racionalizar a história de controle de versão do EF, continuamos a nos referir às partes do EF que fazem parte do .NET Framework como o runtime do EF 4.0, enquanto todas as versões mais recentes consistem no Pacote NuGet do EntityFramework.

EF 3.5

A versão inicial do Entity Framework foi incluída no .NET 3.5 Service Pack 1 e no Visual Studio 2008 SP1, lançado em agosto de 2008. Esta versão fornecia suporte básico de O/RM usando o fluxo de trabalho Database First.