¡Llegamos a la cuarta parte de esta serie! EF Core nos espera, esta vez para aprender a realizar dos acciones vitales sobre nuestra base de datos:

  • Actualizar datos ya existentes
  • Insertar nuevos registros

En nuestra aplicación vamos a dar por hecho (que en este caso particular se trata de una aplicación en consola) que tenemos un menú desde el cual elegir las acciones que hemos listado.

Y pasamos a la primera acción:

Insertar una nueva entidad

Habrá un formulario en el que se nos solicitarán los datos que van a formar parte de la nueva entidad. Damos por supuesto que, hasta llegar a la capa de base de datos, los datos introducidos pasarán por las debidas validaciones: campos obligatorios, rangos de valores numéricos adecuados o cualquier otra comprobación que necesitemos llevar a cabo.

Paso 1

Crearemos un nuevo método que reciba una instancia de la clase Post y compruebe que el valor recibido no sea nulo, en cuyo caso pasará a añadirlo a la colección de Posts que maneja el contexto de nuestra base de datos.

En principio, añadimos a esta colección de Posts la instancia que hemos creado con el método Add(). Sin embargo, hasta que no ejecutemos el método SaveChanges(), estos cambios no se van a materializar en la base de datos.

SaveChanges()devuelve un valor entero con el número de cambios realizados sobre la base de datos, que podemos recoger para comprobar que estos se han generado con éxito. Puedes seguir leyendo sobre este método en la documentación oficial de Microsoft.

Paso 2

Pasamos entonces a crear una nueva instancia de la clase Post con los datos que necesitemos.

Paso 3

Con la instancia que hemos creado en el paso anterior, llamaremos al método de creación desgranado en el Paso 1. Con el resultado obtenido, pasaremos a confirmar si el cambio se ha realizado, y lanzaremos un mensaje en consecuencia por pantalla.

Método de creación de un Post

En circunstancias normales, todo este código estará bien separado y organizado en diferentes Clases, siguiendo una arquitectura bien estudiada. Pero ahora lo muestro en un mismo gist por simplicidad.

Actualizar entidad

Al crear una nueva entidad, tal y como la definimos en la primera migración, el valor de clave primaria se genera automáticamente. Será este valor el que usemos para recuperar una entidad que ya exista.

Paso 1

Creamos un nuevo método para obtener un Post que ya existe. Lo buscamos por ID y si existe, obtendremos una entidad con la que trabajar.

Buscamos accediendo a la colección de Posts y filtrando gracias a LINQ. Lo guardamos sobre un objeto IQueryable , que sirve para seguir construyendo consultas, filtrando y realizando otras operaciones sobre colecciones de datos. Puedes seguir leyendo sobre este tipo en la documentación oficial de Microsoft.

Una vez hemos realizado la consulta, llamamos al método SingleOrDefault(). Este método devuelve un elemento único y específico de un consulta, o el valor por defecto si no hay nada que devolver (en este caso, null). Puedes seguir leyendo acerca de este método en la documentación de Microsoft.

Paso 2

También crearemos un método llamado UpdatePost(), que recibirá un Post que contendrá los datos ya actualizados, modificados según nuestras necesidades.

Llamaremos al método Update() de la colección de Posts en el contexto y después haremos una llamada al método SaveChanges(), que tal y como explicábamos en la sección de inserción, devuelve un entero con el número de cambios ejecutados sobre la BD.

Paso 3

Aquí haremos la búsqueda de un Post que tenga un ID igual a 10. De existir, haremos una modificación en una de sus propiedades, concretamente en el título. Todo listo, podemos entregar esta entidad modificada al método que se encarga de la actualización en base de datos… y si todo ha ido bien, lanzar un mensaje acorde.

Método de actualizacion de un Post

Como he dicho antes, todo el código mostrado debería estar bien organizado siguiendo una arquitectura bien estudiada, pero es mostrado en un mismo gist por simplicidad.

Conclusiones

En la siguiente parte de esta serie, aprenderemos a cómo crear relaciones entre entidades o tablas, para cerrar el círculo de este fantástico ORM.

Gracias por tu tiempo, espero que sea una lectura entretenida e instructiva. Si quieres seguir aprendiendo, no te pierdas el contenido que generamos en PuntoTech. Cada vez somos más y buscamos más contenido interesante para publicar, ¡Anímate a participar!

¡Saludos!

--

--

Elena G
DotTech

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