Entity Framework - Migração

No Entity Framework 5 e nas versões anteriores do Entity Framework, o código foi dividido entre as bibliotecas principais (principalmente System.Data.Entity.dll) enviadas como parte do .NET Framework e as bibliotecas adicionais (principalmente EntityFramework.dll) foram distribuídas e enviado usando NuGet conforme mostrado no diagrama a seguir.

No Entity Framework 6, as APIs principais que antes faziam parte do .NET framework também são enviadas e distribuídas como parte do pacote NuGet.

Isso foi necessário para permitir que o Entity Framework se tornasse open source. No entanto, como consequência, os aplicativos precisarão ser reconstruídos sempre que houver necessidade de migrar ou atualizar seu aplicativo de versões mais antigas do Entity Framework para EF 6.

O processo de migração é simples se seu aplicativo usa DbContext, que foi enviado no EF 4.1 e posterior. Mas, se seu aplicativo for ObjectContext, pouco mais trabalho será necessário.

Vamos dar uma olhada nas etapas a seguir que você precisa realizar para atualizar um aplicativo existente para EF6.

Step 1 - A primeira etapa é direcionar o .NET Framework 4.5.2 e posterior, clique com o botão direito em seu projeto e selecione as propriedades.

Step 2 - Clique com o botão direito no seu projeto novamente e selecione Gerenciar Pacotes NuGet ...

Step 3- Na guia Online, selecione EntityFramework e clique em Instalar. Certifique-se de que as referências do assembly para System.Data.Entity.dll sejam removidas.

Quando você instala o pacote EF6 NuGet, ele deve remover automaticamente todas as referências a System.Data.Entity do seu projeto.

Step 4 - Se você tiver algum modelo criado com o EF Designer, também precisará atualizar os modelos de geração de código para gerar código compatível com EF6.

Step 5 - Em seu Gerenciador de Soluções em seu arquivo edmx, exclua os modelos de geração de código existentes que normalmente serão nomeados <edmx_file_name> .tt e <edmx_file_name> .Context.tt.

Step 6 - Abra seu modelo no EF Designer, clique com o botão direito do mouse na superfície de design e selecione Adicionar Item de Geração de Código ...

Step 7 - Adicione o modelo de geração de código EF 6.x apropriado.

Ele também irá gerar código compatível com EF6 automaticamente.

Se seus aplicativos usam EF 4.1 ou posterior, você não precisará alterar nada no código, porque os namespaces para os tipos DbContext e Code First não mudaram.

Mas se seu aplicativo estiver usando uma versão mais antiga do Entity Framework, tipos como ObjectContext que estavam anteriormente em System.Data.Entity.dll foram movidos para novos namespaces.

Step 8 - Você precisará atualizar seu uso ou diretivas de importação para construir no EF6.

A regra geral para alterações de namespace é que qualquer tipo em System.Data. * Seja movido para System.Data.Entity.Core. *. A seguir estão alguns deles -

  • System.Data.EntityException ⇒ System.Data.Entity.Core.EntityException
  • System.Data.Objects.ObjectContext ⇒ System.Data.Entity.Core.Objects.ObjectContext;
  • System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data.Entity.Core.Objects.DataClasses.RelationshipManager;

Alguns tipos estão nos namespaces do Core porque não são usados ​​diretamente para a maioria dos aplicativos baseados em DbContext.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

Seu projeto existente do Entity Framework funcionará no Entity Framework 6.0 sem grandes alterações.