2 de enero de 2010

LINQ to Entities, Acceso a Datos

En este artículo veremos un ejemplo práctico y sencillo de uso de LINQ to Entities.

¿Que es LINQ to Entities?

LINQ to Entities es una nueva característica de acceso a datos que está basado en ADO.NET Entity Framework. Esta nueva forma de acceso a datos esta disponible a partir del Service Pack 1 del .NET Framework 3.5 y Visual Studio 2008.

LINQ to Entities, Primeros Pasos

Ado.Net Entity Data ModelVeamos un ejemplo práctico y sencillo de lo debemos hacer para comenzar a usar Linq to Entities.

Lo primero que debemos hacer es añadir un nuevo elemento al proyecto de tipo ADO.NET Entity Data Model, pulsamos en el botón Agregar y se iniciará el asistente.

Lo próximo en el asistente será decidir cual es el contenido del modelo de datos, en nuestro caso escogeremos “Generar el modelo desde una base de datos existente.”

Posteriormente seleccionaremos la cadena de conexión a la base de datos, en nuestro ejemplo crearemos una nueva cadena de conexión y además marcaremos la casilla que nos permite guardar dicha cadena en el fichero de configuración App.Config.

Ado.Net Entity Conexion

El último paso de este asistente es decidir cuales serán los objetos de la base de datos que queremos incluir en nuestro modelo de entidades. En nuestro caso escogimos la tabla Person y el procedimiento almacenado GetPerson. Indicamos además el nombre del espacio de nombres del modelo, en nuestro caso jqGridEjemploModel.

Ado.Net Entity Entidades

Y al finalizar obtenemos el siguiente modelo de datos:

Ado.Net Entity Modelo

Al observar junto a la ficha del Explorador de Soluciones, ahora encontraremos una nueva ficha Explorador de Modelos en la que encontraremos los diferentes objetos que tenemos en nuestro modelo de entidades (Entity Data Model).

Ado.Net Entity EDM

En el primer nodo, se muestra el modelo conceptual y en el segundo el modelo correspondiente a la base de datos, es decir, qué tablas, vistas o procedimientos almacenados tenemos mapeados al Entity Data Model.

 

LINQ to Entities, Ejemplo de Código

En este punto ya tenemos definido el modelo, veamos un ejemplo sencillo de uso del Modelo LINQ to Entities.

namespace LINQEjemplos
{
  class Program
  {
    static void Main(string[] args)
    {
      var db = new jqGridEjemploEntities();
     
      var personas = from p in db.Person
                     orderby p.Name
                     select p;
 
      foreach (var p in personas)
        Console.WriteLine("Nombre: {0} {1}, Nacido el: {2}", p.Name, p.LastName,            p.BirthDate.ToShortDateString());
    }
  }
}

El resultado de este código sería el de mostrar todos los elementos de la tabla Person:

Ado.Net Entity PersonY así de simple podemos usar toda la funcionalidad de Linq ligada con el acceso a datos, por ejemplo si solo quisiéramos mostrar los datos de aquellas personas que el nombre comience por S, la modificación al código sería la siguiente:

namespace LINQEjemplos
{
  class Program
  {
    static void Main(string[] args)
    {
      var db = new jqGridEjemploEntities();
     
      var personas = from p in db.Person
                     where p.Name.StartsWith("S")
                     orderby p.Name
                     select p;
 
      foreach (var p in personas)
        Console.WriteLine("Nombre: {0} {1}, Nacido el: {2}", p.Name, p.LastName,            p.BirthDate.ToShortDateString());
    }
  }
}

El resultado sería:

Ado.Net Entity Person S

Y cierro este artículo por aquí, aunque me queda pendiente escribir otro post relacionado con el tema, en el que explicaré como asociar un procedimiento almacenado a una función en el Modelo de Entidades de LINQ. Y además otro en el que exponga un ejemplo de actualización y persistencia de datos.

 

Nota: Para poder usar Linq To Entities, debes tener instalado Microsoft .NET Framework versión 3.5 SP1. Y como se base en ADO.NET Entity Data Model (EDM) debes tener también instalado el SP1 de Visual Studio 2008.