mayo 19, 2021

Cuando hablamos de Entity Famework 6 «clásico» debemos tener en cuenta que su versión 1.0 apareció en 2008 y la última versión corresponde con la 6.4.4 lanzada el 15 de mayo de 2020. Todo los ORM (Object-Relational mapping), como también lo son NHibernate ó Dapper, facilitan una capa intermedia entre las bases de datos relacionales y el modelo de objetos de nuestra aplicación.

Dentro de la hoja de ruta de Microsoft para unificar tecnología .NET tambien afecta a este ORM, la nueva versión EF Core es una versión más ligera, extensible, modular y multiplataforma aunque algunas características previas todavía están pendientes de valorar su integración.

Una de las características, que si podíamos utilizar previamente, es la visualización y edición gráfica del modelo de datos mediante EDMX (XML), función que no está disponible a fecha de hoy. Si intentamos añadir un modelo «clásico» en un proyecto Framework 5:

«The Project’s target framework does not contain Entity Framework runtime assemblies»

Llegados a este punto, podemos cambiar el Framework del proyecto por el 4.8 y/o añadir la referencia al EntityFramework 6.4.4 completa. Si queremos empezar a trabajar con las versiones Core, por ahora, debemos hacerlo desde la línea de comandos.

En este ejemplo partimos de un diseño ya existente de base de datos, a partir del cual generamos las clases correspondientes con el comando Scaffold-DbContext, deberemos tener instalado Microsoft.EntityFrameworkCore.Tools, para una base de datos local:

Scaffold-DbContext 'Server=.\SQLDEV;Database=MiBBDD;Trusted_Connection=True;' Microsoft.EntityFrameworkCore.SqlServer -OutputDir 'Models' -Project 'MiProyecto.Shared' -Force

O a un servidor SQL Azure:

Scaffold-DbContext 'Server=tcp:miServidorSQLazure.database.windows.net,1433; Initial Catalog=MiBBDD;Persist Security Info=False; User ID=usuario;Password=Contraseña; MultipleActiveResultSets=False; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30;' Microsoft.EntityFrameworkCore.SqlServer -OutputDir 'Models' -context 'Entidad' -Project 'MiProyecto.Shared' -Force

Si tu cadena de conexión contiene caracteres especial, por ejemplo «$» utiliza comillas simples en lugar de dobles para evitar problemas. El modificador «-Force» eliminará los archivos si estaban creados previamente.

Si todo ha ido correctamente, en el directorio de salida indicado «Models» se habrán generado las clases correspondientes a nuestro modelo de base de datos.