Ya llevo un tiempo queriendo hacer un curso sobre EF ya que desde las versiones de .NET 6 ha mejorado bastante. Así que sirva este post como introducción a Entity Framework Core.
Índice
1- Qué es Entity Framework Core
Entity framework Core es una librería creada por Microsoft que nos permite acceder a las bases de datos, principalmente relacionales, de una forma muy simple.
La gran ventaja de Entity Framework Core es que es muy simple y amigable, ya que nos permite utilizar código en vez de SQL directamente. Además es compatible con la librería LINQ,aunque cuidado con hacer cosas locas con LINQ que es donde vemos reflejados los posibles problemas de rendimiento.
Por supuesto al ser una librería que está tan aceptada en el mercado tiene funcionalidades muy potentes como por ejemplo, soporte para la concurrencia, soporte para transacciones, caché, o lo que he mencionado antes de utilizar código en vez de SQL también se utilizan entidades como representaciones de las tablas.
Finalmente nos permite elegir el tipo de estructura o de desarrollo que queremos hacer, ya sea a través de code First o de Database first; sobre ambos escenarios veremos ejemplos en el Curso.
1.1 - Cuándo utilizar Entity Framework Core
Yo personalmente siempre he sido muy reacio a utilizar Entity Framework, debido a los problemas de rendimiento que tenía a la hora de montar las consultas.Pero Desde la versión de .NET 6 han mejorado muchísimo, y en esta última de .NET 7, está prácticamente al nivel de dapper, que era el ORM que yo siempre he usado.
Aquí tienes un post sobre que es un ORM y Dapper.
Hoy en día recomiendo utilizar Entity Framework Core, quizá no siempre, pero en el 99% de las ocasiones, ya que salvo en quieres complejas, la “versión por defecto” de Entity framework nos la hace bien, además le podemos pasar SQL literales.
1.2 - Diferencia entre Entity Framework y entity framework core
la diferencia entre Entity Framework y entity framework core es simplemente que Entity framework está ligada a .NET Framework, mientras que Entity Framework core está ligada a .NET o .NET core, además de está última ser más ligera, y recibir las actualizaciones más recientes.
El tema del naming de microsoft no es el más acertado, y es bastante confuso, aquí tienes un post donde lo desgloso.
2 - Code First vs Database first
Cuando hablamos de crear nuevos proyectos que necesitan una base de datos siempre tenemos en mente si debemos seguir un proceso de “Code first” o de “Database first”.
Estos procesos los veremos en profundidad más adelante, pero podemos resumir en lo siguiente:
2.1 - Qué es code First?
Code first es el proceso en el que el desarrollador escribe las clases que van a ser utilizadas como entidades y entity framework se encarga de crear las tablas en base a esas clases.
2.2 - Qué es Database First?
Database First es el proceso en el que la base de datos se crea de forma manual (a través de SQL) o ya existe anteriormente y es Entity Framework el que se encarga de generar las entidades basándose en dicha base de datos.
2.3 - Qué es Model first?
Alternativamente con Entity framework y visual estudio podemos utilizar el proceso model first, que es ir al diseñador de visual studio y crear las entidades, así como sus relaciones en dicho diseñador.