En esta entrada aprenderemos a como acceder a una base de datos creada en SQL Server usando ADO.NET Entity Data Model y como manipular la información de esta usando LINQ.

Usaremos Visual Studio como plataforma y nos crearemos una nueva Aplicación web ASP.NET (.NET Framework) para desarrollar este tutorial.

Nuevo > Proyecto…

1_NuevoProyecto

Aplicación web ASP.NET (.NET Framework) – Nombre: MVCLinqTutorial

2_ElegirTipoProyecto

Plantilla MVC > Aceptar

3_SeleccionarMVC

Al final de este post encontrarás un enlace a GitHub para descargar este proyecto.

¿Qué es ‘LINQ’?

LINQ o Language Integrated Query son un conjunto herramientas de Microsoft para realizar todo tipo de consultas a distintas fuentes de datos: objetos, xmls, bases de datos, etc… Para ello, usa un tipo de funciones propias, que unifica las operaciones más comunes en todos los entornos, con esto, se consigue un mismo lenguaje para todo tipo de tareas con datos.
LINQ nace en el Framework 3.5 y pronto coge una gran aceptación entre el mundo de .net, tanto es así, que enseguida salen proveedores de terceros, para el uso de este lenguaje con JSON, CSVs, o inclusos APIs como la de Twitter y Wikipedia.

 

¿Qué es ‘LINQ to Entities’?

LINQ to Entities proporciona la capacidad de realizar consultas integradas en lenguajes (LINQ) que permite a los desarrolladores de software escribir consultas contra el modelo conceptual de Entity Framework mediante Visual Basic o Visual C#. Las consultas con Entity Framework se representan mediante consultas de árboles de comandos, que se ejecutan en el contexto del objeto. LINQ to Entities convierte las consultas de Language-Integrated Queries (LINQ) en consultas de árboles de comandos, ejecuta las consultas en Entity Framework y devuelve objetos que se pueden usar tanto en Entity Framework como en LINQ.

 

Cómo crear un contexto en ASP.NET MVC

Haremos click derecho sobre la carpeta Models > Agregar > Nuevo elemento.

4_AgregarNuevoElemento

Iremos al apartado datos, elegiremos la opción ADO.NET Entity Data Model y la llamaremos ContextoLINQTutorial.

5_ElegirElemento

Elegiremos EF Designer desde base de datos como contenido del modelo.

6_ElegirContenidoDelModelo

En el siguiente apartado, pulsaremos sobre Nueva conexión…

7_NuevaConexion

Una vez estemos en Propiedades de la conexión, elegiremos como origen de datos Microsoft SQL Server (SqlClient).
En nombre de servidor escribiremos LOCALHOST\{NOMBRE_SERVIDOR}, esta ruta la encontraréis en vuestro Microsoft SQL Management Studio.
Utilizaremos Autenticación de SQL Server y escribiremos el usuario y contraseña con el que accedamos a dicho servidor.
Por último, seleccionaremos la base de datos que queramos usar en el contexto y haremos click en Aceptar.

8_ConfigurarNuevaConexion

No hay que olvidarse de poner el mismo nombre que el del contexto en la opción ’Guardar configuración de conexión en Web.Config como:’, que en mi caso será, ContextoLINQTutorial y pulsaremos Siguiente una vez hechos estos pasos.

9_NombreConfiguracion

Elegiremos la opción Entity Framework 5.0 e iremos al siguiente paso.

10_ElegirVersionFramework

Como último paso, desplegaremos la opción Tablas > dbo y haremos click en la tabla USUARIOS, una vez hechos estos pasos, haremos click en Finalizar y ya tendremos nuestro contexto creado.

11_ElegirTabla

 

Accediendo y modificando los datos del contexto

En este apartado atacaremos al contexto creado anteriormente usando las operaciones SELECT, UPDATE, CREATE y DELETE.
Estas acciones se harán dentro de la clase ModeloUsuarios que está dentro de la carpeta Models.

12_AgregarClase

13_NombreClase

Lo primero que haremos una vez creada la clase será crear la variable del contexto y transformarla en objeto ContextoLINQTutorial dentro del contructor.

14_ContructorClase

A partir de este punto, crearemos los métodos para atacar al contexto, empezando por el método GetUsuarios(), que recogerá los usuarios de la base de datos.

SELECT

La estructura que debe tener la consulta Linq de selección es la siguiente:

var datostabla = (from datos in contexto.{TU_TABLA} select datos).ToList();

Y así es como quedará el método GetUsuarios():

15_GetUsuarios

El siguiente método creado será InsertarUsuario(String nombre, String apellido). Primero tendremos que crear un objeto, en mi caso, de la tabla USUARIOS. Le daremos los valores recibidos en el método, añadiremos el objeto al contexto y guardaremos los cambios realizados.

INSERT

La estructura que debe tener la consulta Linq de insercción es la siguiente:

contexto.{TU_TABLA}.Add({OBJETO_TABLA});

Y así es como quedará el método InsertarUsuario(String nombre, String apellido):

16_InsertarUsuarios

Ahora toca elimnar, por lo que crearemos el método EliminarUsuario(int id), este se encargará de hacer una consulta de selección para recoger el usuario que queremos borrar, procediendo con la siguiente línea de código para ejecutar esta acción:

DELETE

contexto.{TU_TABLA}.Remove({OBJETO_RECIBIDO});

Así quedará el método EliminarUsuario(int id):

17_EliminarUsuario

Por último, queda el método EditarUsuario(int id, String nombre, String apellido), en el que recogeremos al usuario recibido en el método DetallesUsuario(int id), le cambiaremos los datos actuales por los recibidos por parámetro y guardaremos los cambios realizados.

UPDATE

Método DetallesUsuario(int id):

19_DetallesUsuario

Método EditarUsuario(int id, String nombre, String apellido):

18_EditarUsuario

 

Aquí termina el tutorial, ¿qué te ha parecido Linq?, ¿Te parece cómoda la forma de acceder a tu base de datos utilizando esta herramienta?

Estaré encantado de que expongas tus ideas y plantees tus dudas para poder ayudarte en cualquier duda o idea que propongas.

¡Un saludo, nos vemos en la próxima!

 

Autor: Miguel Moreno Pérez
Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin
Centro: Tajamar
Año académico: 2017-2018
LinkedIn: https://www.linkedin.com/in/miguel-moperz/

Código: https://github.com/Moperz96/MVCLinqTutorial