Entity Framework: migración

En Entity Framework 5 y versiones anteriores de Entity Framework, el código se dividió entre las bibliotecas centrales (principalmente System.Data.Entity.dll) enviadas como parte de .NET Framework, y las bibliotecas adicionales (principalmente EntityFramework.dll) se distribuyeron y enviado con NuGet como se muestra en el siguiente diagrama.

En Entity Framework 6, las API principales que anteriormente formaban parte de .NET Framework también se envían y distribuyen como parte del paquete NuGet.

Esto era necesario para permitir que Entity Framework se hiciera de código abierto. Sin embargo, como consecuencia, las aplicaciones deberán reconstruirse siempre que sea necesario migrar o actualizar su aplicación desde versiones anteriores de Entity Framework a EF 6.

El proceso de migración es sencillo si su aplicación usa DbContext, que se envió en EF 4.1 y versiones posteriores. Pero si su aplicación es ObjectContext, se requiere poco más de trabajo.

Echemos un vistazo a los siguientes pasos que debe seguir para actualizar una aplicación existente a EF6.

Step 1 - El primer paso es apuntar a .NET Framework 4.5.2 y luego hacer clic derecho en su proyecto y seleccionar propiedades.

Step 2 - Haga clic derecho en su proyecto nuevamente y seleccione Administrar paquetes NuGet ...

Step 3- En la pestaña En línea, seleccione EntityFramework y haga clic en Instalar. Asegúrese de que se eliminen las referencias de ensamblado a System.Data.Entity.dll.

Cuando instale el paquete EF6 NuGet, debería eliminar automáticamente cualquier referencia a System.Data.Entity de su proyecto.

Step 4 - Si tiene algún modelo creado con EF Designer, también deberá actualizar las plantillas de generación de código para generar código compatible con EF6.

Step 5 - En su Explorador de soluciones en su archivo edmx, elimine las plantillas de generación de código existentes que normalmente se llamarán <nombre_archivo_edmx> .tt y <nombre_archivo_edmx> .Context.tt.

Step 6 - Abra su modelo en EF Designer, haga clic con el botón derecho en la superficie de diseño y seleccione Agregar elemento de generación de código ...

Step 7 - Agregue la plantilla de generación de código EF 6.x adecuada.

También generará código compatible con EF6 automáticamente.

Si sus aplicaciones usan EF 4.1 o posterior, no necesitará cambiar nada en el código, porque los espacios de nombres para los tipos DbContext y Code First no han cambiado.

Pero si su aplicación usa una versión anterior de Entity Framework, los tipos como ObjectContext que estaban anteriormente en System.Data.Entity.dll se han movido a nuevos espacios de nombres.

Step 8 - Deberá actualizar sus directivas de importación o uso para compilar contra EF6.

La regla general para los cambios de espacio de nombres es que cualquier tipo de System.Data. * Se mueve a System.Data.Entity.Core. *. A continuación se muestran algunos de ellos:

  • 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;

Algunos tipos están en los espacios de nombres Core porque no se usan directamente para la mayoría de las aplicaciones basadas en DbContext.

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

Su proyecto de Entity Framework existente funcionará en Entity Framework 6.0 sin cambios importantes.