Borrar Registros con Entity Framework Core

El proceso para borrar un Registro con Entity Framework desde la versión 4.5 o superiores incluyendo la Core, es un proceso bastante sencillo de implementar, pero hay que tomar ciertas consideración que a algunos programadores podría provocar confusión.

El proceso para realizar un borrado es el Siguiente:

  1. Instanciar nuestro objeto DbContext
  2. Identificar Nuestro Objeto o Arreglo de Objetos de nuestro Registro, una instancia de la Clase de nuestra tabla
  3. Aplicar .Remove() / .RemoveRange() sobre el objeto Registro
  4. Aplicar SaveChanges()

 

Ejercicio Practico


Para esto definiremos una Clase a nuestra tabla Cliente, la cual como un ejemplo básico definiremos de la siguiente manera:

public class Cliente
{
   public int Id {get; set;}
   public string Nombre {get; set;}
   public DateTime Nacimiento {get; set;}
   public int Edad {get; set;}
}

 

Paso 1, Instanciar Nuestro Objeto DbContext


Para instanciarlo bajo el esquema Normal, podría ser:


private ApplicationDbContext db = new ApplicationDbContext();

 

Paso 2, Identificar Nuestro Objeto Registro


Podemos identificarlo de diferentes maneras, para nuestro ejemplo debido a que estamos manejando una Primary Key Identificador de Tabla, lo haremos directamente.


int l_id = 128;  /* Int Local Id */

/* Utilizamos l_ para indicar que es una variable usada Localmente,
una nomenclatura personal  */
Cliente l_cliente = db.Cliente.Find(l_id);

Algo que debemos Recordar es que el Objeto “l_cliente” representa un Registro en la base de datos el cual estamos recuperando y gestionando con Entity Framework. EF, podrá resolver nuestra petición siempre y cuando identifique el OBJETO como tal.

Muchos Programadores recuperan Una o algunas columnas del Registro, y después lo pasan como referencia a EF, esperando que este resuelva como una Sentencia SQL. Lo cual es un típico error de entendimiento.

Si planeas ocupar una notación parecida a (from p in db.Cliente where p.id = l_id select p).Single() para identificar tu registro, deberás notar tu error, donde en lugar de traer el Objeto Registro “l_cliente” traes solamente un Entero o una cadena String que es “select p“. El problema podría solventarse con simplemente declarar todas las columnas, para que EF devuelva el objeto completo de Registro de la clase “Cliente“.

 

Paso 3, Aplicar .Remove() / .RemoveRange() sobre el objeto Registro


Esta es la instrucción que marca el registro para ser borrados.


db.Cliente.Remove(l_cliente);

 

Si deseamos pasar varios Registros el cambio aplicado podría ser el siguiente.


Cliente[] l_cliente = new Cliente[2];

l_cliente[0] = db.Cliente.Find(128);
l_cliente[1] = db.Cliente.Find(256);

/* Notese el uso de .RemoveRange() por .Remove() */
db.Cliente.RemoveRange(l_cliente);

 

Paso 4, Aplicar los Cambios


En la instrucción SaveChanges(), la base de datos recibe el comando SQL DELETE.


db.SaveChanges();

Este paso es el mas obvio pero dejaremos un Ejemplo completo, para su visualización global.


private ApplicationDbContext db = new ApplicationDbContext();
Cliente l_cliente = db.Cliente.Find(128);
db.Cliente.Remove(l_cliente);
db.SaveChanges();

 


links & referencias: 

si deseas mas información o consultar las fuentes bibliográficas, aquí te dejamos…

Estudiante de la vida, buscando aprender…
Tu solo pregunta, si no tengo la respuesta… ya NO preguntaras solo…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *