Al trabajar con las base de datos, además de cómo estructuramos los datos, la parte más importante es cómo recuperamos y manipulamos la información.
Para ello tenemos las operaciones CRUD, que son un acrónimo que representa las cuatro operaciones principales que realizamos en bases de datos:
- Create: Crear nuevos registros.
- Read: Leer o consultar registros existentes.
- Update: Actualizar registros existentes.
- Delete: Eliminar registros.
En este artículo, nos enfocaremos en las operaciones READ, que permiten recuperar información almacenada en la base de datos para mostrarla en la aplicación.
Las consultas en EF se realizan principalmente a través de LINQ (Language Integrated Query)
Métodos para leer varios elementos
Entity Framework ofrece varias formas de realizar consultas READ, desde las básicas hasta las más avanzadas. Estas son las más comunes:
Consultar todos los registros ToList
La forma más simple de recuperar datos es utilizando el método ToList
, que devuelve todos los registros de una tabla.
var estudiantes = context.Estudiantes.ToList();
foreach (var estudiante in estudiantes)
{
Console.WriteLine($"Id: {estudiante.Id}, Nombre: {estudiante.Nombre}, Edad: {estudiante.Edad}");
}
En este ejemplo, EF Core ejecuta una consulta SQL equivalente a:
SELECT * FROM Estudiantes;
Filtrar datos con Where
El método Where
es uno de los más utilizados en EF, ya que nos permite filtrar registros basados en una condición específica.
var estudiantesMayores = context.Estudiantes.Where(e => e.Edad > 18).ToList();
foreach (var estudiante in estudiantesMayores)
{
Console.WriteLine($"Nombre: {estudiante.Nombre}, Edad: {estudiante.Edad}");
}
Consulta SQL generada:
SELECT * FROM Estudiantes WHERE Edad > 18;
Métodos para leer un único elemento
Buscar un registro con FirstOrDefault
El método FirstOrDefault
es similar a Where
, pero en lugar de devolver una colección de registros, devuelve el primer registro que cumple con la condición especificada. Si no se encuentra ningún registro que cumpla la condición, devuelve null
.
var estudiante = context.Estudiantes.FirstOrDefault(e => e.Nombre == "Juan");
Console.WriteLine($"Id: {estudiante.Id}, Nombre: {estudiante.Nombre}");
Consulta SQL generada:
SELECT TOP 1 * FROM Estudiantes WHERE Nombre = 'Juan';
Búsqueda por clave primaria con Find
El método Find
es una de las formas más sencillas y eficientes de buscar un registro en la base de datos utilizando su clave primaria.
var entidad = contexto.Entidades.Find(clavePrimaria);