[EF + Oracle] Consulta de los datos (I).

Prologo

Hasta el momento, hemos visto un acercamiento a trabajar con Entity Framework y Oracle viendo:

  1. Introducción
  2. Entidades
  3. El Contexto
  4. Inserción de Datos (1 y 2)
  5. Actualización y Borrado de Datos

Durante este y algunos de los siguientes capítulos, vamos a trabajar sobre la consulta de datos con Entity Framework

Introducción a las Consultas de Datos

Por lo general, a la hora de hacer consultas a la Base de Datos, generábamos una clase donde construíamos una o varias sentencias SQL, y a través del los objetos Command, las ejecutábamos contra la conexión existente y devolvíamos los datos en un DataTable o en un DataReader y los utilizábamos como necesitásemos.

Para consultar la BD en Entity Framework, se va a utilizar LINQ – To – Entities. En lugar de construir una sentencia SQL que acceda directamente a la Base de Datos, se va a llevar a cabo una consulta sobre el modelo de Entity Framework en la Entidad (Tabla) sobre la que se desea obtener información.

Internamente, la consulta LINQ que se va a generar va a ser transformada a lenguaje SQL entendible por el motor de Base de Datos, y va a devolver un conjunto de resultados sobre dicha consulta.

En estos posts no voy a entrar a decir como se realiza una consulta SQL, ya que hay mucha información relativa a eso, y en mi propio blog he puesto ya algunos ejemplos.

 

Creación de una consulta sencilla en EF

El orden de las consultas de EF difiere con respecto de una consulta SQL.

En primer lugar necesitamos definir el Origen de los Datos, es decir, la Entidad que queremos consultar (FROM).

Después, se podrán indicar:

  1. Condiciones de filtrado a través de la palabra reservada Where.
  2. Forma de Agrupación de los datos a través de la palabra Reservada Group by
  3. Forma de Ordenación de los datos a través de la palabra reservada order by.

Y por último, será necesario que indiquemos, a través de la palabra reservada Select, las propiedades que queremos visualizar.

Para ver esto, vamos a hacer un pequeño ejemplo:

Sintaxis SQL:

   1: using (OracleConnection connection=new OracleConnection("MyConnection"))

   2: {

   3:     using (OracleCommand command = 

   4:             new OracleCommand("Select * from Empleados",connection))

   5:     {

   6:         connection.Open();

   7:  

   8:     }

   9: }

 

Sintaxis EF:

   1: var query = from EMPLEADOS employee in ent.EMPLEADOS

   2:                         select employee;

 

Con ambas consultas vamos a obtener el mismo resultado, todos los empleados de la tabla / entidad.

Para realizar esta consulta, realmente no es necesario hacerlo con esta sintaxis de EF, se puede realizar directamente accediendo al ObjectSet Empleados del contexto, obteniendo el mismo resultado.

   1: var query = ent.Empleados;

De la misma manera que en SQL podemos realizar filtrado de registros a visualizar a través de la palabra reservada Where, en EF también podemos utilizarlo:

Sintaxis SQL:


   1: using (OracleConnection connection = new OracleConnection("MyConnection"))

   2: {

   3:     using (OracleCommand command =

   4:       new OracleCommand("select * from empleados where nombre like '%j%'", connection))

   5:      {

   6:          connection.Open();

   7:      }

   8: }

Sintaxis EF:

   1: var query = from Empleados emp in ent.Empleados

   2: where emp.Nombre.Contains("c")

   3: select emp;

Expresión Lambda (Método Extensor Where)

   1: var query = ent.Empleados.Where(empleado => empleado.Nombre.Contains("c"));

 

En los próximos capítulos vamos a entrar más en profundidad en la consulta de Datos utilizando Linq-To-Entities, viendo las palabras reservadas que nos falta.

3 comentarios sobre “[EF + Oracle] Consulta de los datos (I).”

  1. Me encanto EF por la rapidez del mapeo de los tablas, pero personalmente hablando de las consultas prefiero hacerlas con procedimientos almacenados y que EF me genere la entidad resultado y simplemente enlazo los datos.

Deja un comentario

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