Пример #1
0
        //Con .Select se crea un objeto dinámico segón lo que especifiquemos, por ejemplo
        //para así recuperar los campos que queremos, ej 2 campos de 7
        public static void ObjetoDinamico()
        {
            using (var ctx = new CentroFormacionEntities())
            {//select new se usa cuando se quieren seleccionar varios campos.
                var data = ctx.Profesor.Where(o => o.Nombre.Contains("Luis"))
                    .Select(o=>new {Denominacion=o.Nombre, Antiguedad=o.Edad});

                foreach(var profesor in data)
                {
                    Console.WriteLine(profesor);
                }

                //Nomenclatura opcional:
                var data2 = from o in ctx.Profesor
                    where o.Nombre.Contains("Luis")
                    select new
                    {
                        Denominacion = o.Nombre,
                        Antiguedad = o.Edad,
                    };

                foreach (var profesor2 in data2)
                {
                    Console.WriteLine(profesor2);
                }

            }
        }
Пример #2
0
 //Encadenar busquedas.
 public static void BusquedaEnlazada()
 {
     using (var ctx = new CentroFormacionEntities())
     {//select, sin new, se puede usar cuando solo se quiere obtener un campo.
         var cursosProfesor = ctx.ProfesorCurso.Where(o => o.idProfesor == 1)
             .Select(o => o.Curso);
         Console.WriteLine(cursosProfesor);
     }
 }
Пример #3
0
 public static void ConsultaSimple()
 {
     //Using controla el cierre de las conexiones.
     //"usa esto y cieera cuando termines"
     using (var ctx=new CentroFormacionEntities())
     {
         var data = ctx.Profesor.Where(o => o.Nombre.Contains("Luis"));
         foreach (var profesor in data)
         {
             Console.WriteLine(profesor);
         }
     }
 }
Пример #4
0
        //Para gestionar, por ejemplo, una página con una vista con varios filtros, entra en accion
        //el lazyloading, que hace que las consultas que hacemos realmente lo que tienen son las
        //instrucciones para llegar a los datos, no los datos en si mismos.
        //Únicamente cuando se incluye .ToList() o se recorren con for/foreach, se obtienen los datos
        //Para gestionar el lazyloading se puede hacer a nivel local, en un método concreto, o en general
        //para la app.
        public static void SinLazy()
        {
            using (var ctx = new CentroFormacionEntities())
            {//Desactivado en local.
                ctx.Configuration.LazyLoadingEnabled = false;
                // La instruccion .include sirve para que se incluyan datos de tablas
                //relacionadas (que en el diseño están relacionadas con primary/foreign key
                //Ya que no se han cargado porque estamos con lazyloading
                var alu = ctx.Alumno.Include("Curso").Where(o => o.DNI.Contains("A"));
            }

            //Para desactivar a nivel global, dejando la opción de activarlo según el método:
            //Crear una clase partial que incluya el constructor del model.
            //Luego en la llamada para crear el ctx, la llamada al entitie y se le pasa un valor
            //ya que se ha definido que reciba un valor el constructor.

            using (var ctx = new CentroFormacionEntities(false))
            {
            }
        }
Пример #5
0
 //Subselects.
 public static void Subselect()
 {
     using (var ctx = new CentroFormacionEntities())
     {   //Busca el alumno con ID (el dni), obten los cursos, de estos cursos obten los profesores que imparten
         //dicho curso y de estos profesores, su nombre
         var data = ctx.Alumno.Find("12345678A").Curso.Select(o => o.ProfesorCurso.Select(oo => oo.Profesor.Nombre));
         Console.WriteLine(data);
     }
 }
Пример #6
0
 //Consultas de agregados(sumar, restar, average, etc).
 public static void Suma()
 {
     using (var ctx = new CentroFormacionEntities())
     {
         var data = ctx.Curso.Sum(o => o.Duracion);
         Console.WriteLine(data);
     }
 }