Operaciones CRUD – SELECT
Hola de nuevo, continuamos con este mini curso de EntityFrameWorkCore, por si aun no has leído las entradas anteriores te las dejo para que te pongas al día:
- Parte I: https://asociacionaepi.es/curso-de-entityframeworkcore-parte-1-instalando-herramientas/
- Parte II: https://asociacionaepi.es/curso-de-entityframeworkcore-parte-ii-el-dbcontext/
- Parte III https://asociacionaepi.es/curso-de-entityframeworkcore-parte-iii-creando-los-modelos/
Llegados a este punto ya tenemos todo listo para empezar a trabajar con los datos de nuestra base de datos de SQL Server. Vamos a realizar lo que conocemos en programacion como CRUD (leer, insertar, actualizar y eliminar) datos de la base de datos.
LEER TODOS LOS RGISTROS DE LA BASE DE DATOS
using (var db = new ApplicationDbContext()) { // TODOS LOS REGISTROS DE LA TABLA CURSO var cursos = db.Curso.AsNoTracking(); foreach (var curso in cursos) { Console.WriteLine(curso.Titulo); } }
En este primer ejemplo, lo que hacemos es traernos todos los registros dela tabla Curso, almacenarlos en la variable cursos y posteriormente recorrer dicha variable mediante un bucle foreach, mostrando por consola el titulo de cada registro, en este caso mostramos solo el título, pero podríamos acceder a todos los campos sin ningún problema.
LEER LOS REGISTROS, EN UNA RELACION DE UNO A UNO
using (var db = new ApplicationDbContext()) { var cursos = db.Curso.Include(p => p.Precio).AsNoTracking(); foreach (var curso in cursos) { Console.WriteLine(curso.Titulo + " - Precio promocion: " + curso.Precio.Promocion); } }
En este segundo ejemplo, vamos a trabajar con la relación OneToOne entre las tablas Curso y Precio, para ello estamos accediendo a los campos de la tabla Curso y además estamos agregando mediante Include todos los registros de la tabla Precio, podemos hacer esto ya que si recuerdas nuestro modelo Curso, habíamos agregado una referencia a la tabla Precio de esta manera: public Precio Precio { get; set; }
Los registros de la consulta los almacenamos en la variable cursos y posteriormente recorremos dicha variable mediante un bucle foreach, mostrando por consola el titulo de cada registro y su correspondiente Precio.
LEER LOS REGISTROS, EN UNA RELACION DE UNO A MUCHOS
using (var db = new ApplicationDbContext()) { var cursos = db.Curso.Include(c => c.ListaComentarios).AsNoTracking(); foreach (var curso in cursos) { Console.WriteLine(curso.Titulo); foreach (var comentario in curso.ListaComentarios) { Console.WriteLine("--- " + comentario.ComentarioTexto); } } }
En este tercer ejemplo, vamos a trabajar con la relación OneToMany entre las tablas Curso y Comentario, para ello estamos accediendo a los campos de la tabla Curso y además estamos agregando mediante Include todos los registros de la tabla Comentario, podemos hacer esto ya que si recuerdas nuestro modelo Curso, habíamos agregado una referencia a la tabla Comentario de esta manera: public ICollection<Comentario> ListaComentarios { get; set; }
Los registros de la consulta los almacenamos en la variable cursos y posteriormente recorremos dicha variable mediante dos bucles foreach anidados, en el bucle externo recorremos la variable cursos y en el bucle interno accedemos a la propiedad ListaComentarios, la cual en cada iteración del bucle externo contendrá una lista con todos los comentarios de dicho Curso.
LEER LOS REGISTROS, EN UNA RELACION DE MUCHOS A MUCHOS
using (var db = new ApplicationDbContext()) { var cursos = db.Curso.Include(c => c.InstructorLink).ThenInclude(ci => ci.Instructor); foreach (var curso in cursos) { Console.WriteLine(curso.Titulo); foreach (var insLink in curso.InstructorLink) { Console.WriteLine("*** " + insLink.Instructor.Nombre); } } }
En este cuarto ejemplo, vamos a trabajar con la relación ManyToMany entre las tablas Curso e Instructor, para ello estamos accediendo a los campos de la tabla Curso y además estamos agregando mediante Include todos los registros de la tabla Instructor, podemos hacer esto ya que si recuerdas nuestro modelo Curso, habíamos agregado una referencia a la tabla CursoInstructor de esta manera: public ICollection<CursoInstructor> InstructorLink { get; set; }
Los registros de la consulta los almacenamos en la variable cursos y posteriormente recorremos dicha variable mediante dos bucles foreach anidados, en el bucle externo recorremos la variable cursos y en el bucle interno accedemos a la propiedad InstructorLink, la cual en cada iteración del bucle externo contendrá una lista con todos los instructores asociados a cada Curso.
En la próxima entrega de este mini curso continuaremos creando nuestro CRUD para insertar, eliminar y actualizar datos de nuestra base de datos.
Si te ha gustado comparte por favor, nos ayudas mucho!