Portabilidad de un modelo basado en EDMX de EF6 a EF Core

EF Core no admite el formato de archivo EDMX para los modelos. La mejor opción para realizar la portabilidad de estos modelos consiste en generar un modelo nuevo basado en código a partir de la base de datos de la aplicación.

Instalación de los paquetes NuGet de EF Core

Instale el paquete NuGet Microsoft.EntityFrameworkCore.Tools.

Regeneración del modelo

Ahora puede usar la funcionalidad de ingeniería inversa para crear un modelo basado en la base de datos existente.

Ejecute el comando siguiente en la consola del Administrador de paquetes NuGet (Herramientas –> Administrador de paquetes NuGet –> Consola del Administrador de paquetes). Vea Consola del Administrador de paquetes (Visual Studio) para conocer las opciones de comando para aplicar scaffolding a un subconjunto de tablas, etc.

Scaffold-DbContext "<connection string>" <database provider name>

Por ejemplo, este es el comando para aplicar scaffolding a un modelo a partir de la base de datos Blogging en la instancia de LocalDB de SQL Server.

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

Eliminación del modelo de EF6

Ahora se quitará el modelo de EF6 de la aplicación.

No hay problema por dejar el paquete NuGet de EF6 (EntityFramework) instalado, ya que EF Core y EF6 se pueden usar en paralelo en la misma aplicación. Sin embargo, si no va a usar EF6 en ninguna de las áreas de la aplicación, la desinstalación del paquete le ayudará a centrar los errores de compilación en los fragmentos de código que requieren atención.

Actualización del código

En este punto, es cuestión de solucionar los errores de compilación y de revisar el código para ver si los cambios de comportamiento entre EF6 y EF Core le afectarán.

Prueba del puerto

El hecho de que la aplicación se compile no significa que se haya trasladado correctamente a EF Core. Tendrá que probar todas las áreas de la aplicación para asegurarse de que ninguno de los cambios de comportamiento afecte de forma negativa a la aplicación.

Otras consideraciones

EF Core no es compatible con el proveedor EntityClient y, por lo tanto, las consultas de EntitySQL deben migrarse a LINQ o FromRawSql.

Además, no hay compatibilidad con las cadenas de conexión de EntityClient.

Para ver más consideraciones, lea la guía completa de diferencias entre EF6 y EF Core.