Conociendo Entity Framework Core — I

La guía que te permitirá profundizar en este framework de .NET

Elena G
DotTech
4 min readApr 20, 2020

--

Photo by Capturing the human heart. on Unsplash

Introducción

Si desarrollas APIs, aplicaciones móviles, de escritorio etc. con tecnologías .NET, tarde o temprano abordarás la permanencia de los datos con los que operas y Entity Framework Core aparecerá en tu camino.

Pero… ¿Qué es? ¿Por qué es útil? ¿Qué puede aportar a mi desarrollo? ¿Cómo empiezo? Poco a poco, iremos dando respuestas a estas preguntas, pero antes necesitaremos algo de contexto.

¿Qué es un ORM?

Un ORM (Object-Relational Mapping) es una técnica con la cual mapeamos o equiparamos las entidades de nuestra base de datos con objetos o clases en nuestro lenguaje de programación orientado a objetos.

En definitiva, es la creación de una capa de abstracción entre nuestros datos y nuestro código, facilitando la gestión y las operaciones que se hacen sobre la base de datos.

Entonces… ¿Qué es Entity Framework Core?

Entity Framework Core o EF Core es un ORM, entre otros muchos que existen en el mercado, desarrollado por Microsoft para aplicaciones .NET. Es ligero, extensible, de código abierto y multiplataforma. Y citando la documentación oficial:

“… permite trabajar con una base de datos mediante objetos .NET y eliminar la mayoría del código de acceso a los datos que normalmente deben escribir.”

Añadirlo a nuestra aplicación o API es realmente sencillo, pero antes describiremos algunos términos que nos serán útiles en el camino hacia EF Core.

Code-First y Database-First

Son términos que puedes leer conforme te inicias en este ORM, y que conviene aclarar lo antes posible.

Estos dos términos se refieren a las estrategias o approaches principales que podemos elegir para trabajar con EF Core. Para elegir entre una u otra nos podemos preguntar lo siguiente: en el proyecto en el que voy a trabajar, ¿Nuestra base de datos ya existe o será creada desde cero?

Si ya está creada, significa que usaremos la estrategia Database-First, como su nombre indica. Las entidades, sus relaciones, ya existen, por lo que toca “extraer” las clases u objetos .NET a partir de las tablas ya creadas.

Si la base de datos no existe, toca entonces Code-First. Significa que, a través de código (o de clases para ser más específica), vamos a definir las entidades que necesitamos y cómo se relacionan entre ellas.

Migrations

Nuestras bases de datos cambian, no son entes inmutables en el tiempo.

¿Por qué cambian? Porque el modelo de negocio evoluciona, porque nos equivocamos, porque se descubren nuevas necesidades… los posibles motivos son muchos, pero al final generan cambios en nuestras bases de datos.

Podríamos abrir una terminal o nuestro gestor de base de datos para modificar de forma directa una tabla… pero eso conlleva los siguientes problemas:

  • Complicaciones si se necesitan revertir los cambios.
  • No queda constancia del momento exacto en que se realizó ese cambio.
  • La autoría de ese cambio no se controla.
  • Debe ser responsabilidad de la persona que gestiona la base de datos.
  • No se puede controlar por herramientas como sistemas de control de versiones.

La solución a estos problemas (y a otros muchos que seguramente no he mencionado) se resuelven con las migrations o migraciones.

Las migraciones son ficheros que reúnen en forma de código dos elementos. El primero, las acciones que se van a realizar sobre la base de datos (añadir nuevos datos a una tabla maestra, eliminar un campo, renombrar una tabla…). Y el segundo, los pasos a realizar para revertir los cambios que se realizan en la primera parte.

Esta migración (o el grupo de las mismas) se entrega a la persona que gestione la base de datos, y será esta quien confirme que los cambios a realizar son válidos y se encargue de ejecutarlos.

Conclusión

Hasta el momento, es una introducción muy conceptual, pero a partir de estos conceptos comprobaremos cómo nos facilita la vida a la hora de hablar, comunicarnos con nuestros datos, además de ayudarnos a mantener unos mínimos de seguridad sobre las bases de datos con las que operamos.

Muchas gracias por leerme, espero que este artículo haya resultado de utilidad. Si tienes dudas o alguna otra inquietud que podamos resolver, no dudes dejarlo en comentarios o bien explorar el resto de contenidos que escribimos en PuntoTech.

¡Saludos!

--

--

Elena G
DotTech

.NET developer | Microsoft MVP | speaker | worldbuilding, storytelling 📝🌃 | gamedev, futurism 💻📱🎮 | she/they | ⚾ https://twitter.com/Beelzenef_