LINQ to Entities – Como acceder a tu BBDD y controlar la información en MVC
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…

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

Plantilla MVC > Aceptar

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.

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

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

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

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.

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.

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

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.

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.


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

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():

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):

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):

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):

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

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/
Me parece excelente, es el único material que he hallado hasta ahora donde explican detalladamente un CRUD utilizando Linq to Entities, ya me veía perdido, al menos esto es un comienzo para estudiar aún más, gracias hermano