Siempre que usamos un Entity Framework , si queremos podemos usar o no Linq , aunque generalmente cuando trabajas con este tipo de conexión de datos es optimo usar linq ya que puedes ejecutar las consultas a través del code behind con mayor flexibilidad.
En este post , veremos como realizar una consulta con linq y asignarle valores a las Entidades que usaremos para mostrar nuestra data en los View.
Que es Linq ?
Lenguaje integrado de consultas, es un componente de .NET , y nos permite realizar consultas en los lenguajes de .NET , en este caso C# con la sintaxis de consultas de sql.
Pueden ver mas información de la Microsoft Microsoft - Sintaxis LINQ
1. Creamos nuestro Entity Framework (para crear un EF puede ver Entity Framework).
2. Creamos el modelo o Entity model , en este caso creare uno para productos.
public class ProductoModel { public int IdProducto { get; set; } public string NombreProducto { get; set; } public string NombreProveedor { get; set; } public string NombreCategoria { get; set; } public string CantidadPorUnidad { get; set; } public decimal? PrecioUnidad { get; set; } }
3. Luego en el controlador realizamos la consulta con LINQ, tal y como lo harias en SQL.
public class ProductosController : Controller { NeptunoEntities db = new NeptunoEntities(); public ActionResult ListaProductos() { var Listado = from p in db.Productos join pr in db.Proveedores on p.IdProveedor equals pr.IdProveedor join c in db.Categorias on p.IdCategoria equals c.IdCategoria return View(); } }
Si te das cuenta , esto es lo mismo que una consulta en SQL.
select p.IdProducto, p.NombreProducto, pro.NombreCompañia as Proveedor, c.NombreCategoria, p.CantidadPorUnidad, p.PrecioUnidad from productos p inner join Proveedores pro on p.IdProveedor= pro.IdProveedor inner join Categorias c on p.IdCategoria = c.IdCategoria4.Asignamos los valores a las propiedades del Modelo de la siguiente manera.
public ActionResult ListaProductos() { var Listado = from p in db.Productos join pr in db.Proveedores on p.IdProveedor equals pr.IdProveedor join c in db.Categorias on p.IdCategoria equals c.IdCategoria select new ProductoModel { IdProducto = p.IdProducto, NombreProducto = p.NombreProducto, NombreProveedor = pr.NombreCompañia, NombreCategoria = c.NombreCategoria, CantidadPorUnidad = p.CantidadPorUnidad, PrecioUnidad = p.PrecioUnidad }; var Productos = Listado.ToList(); ViewBag.ListadoProductos = Productos; return View(Productos); }
Si te das cuenta aqui le asigno mas directamente los valores a las propiedades del modelo ya que el Entity Framework me creo automaticamente las Entidades.
5.Finalmente retornamos los datos a la vista correspondiente.
@{ViewBag.Title = "ListaProductos";} @using Linq_Entidades.Models; <h2>ListaProductos</h2> <table> <thead> <tr> <th>IdProducto</th> <th>NombreProducto</th> <th>Proveedor</th> <th>NombreCategoria</th> <th>CantidadPorUnidad</th> <th>PrecioUnidad</th> </tr> </thead> <tbody> @foreach (var p in ViewBag.ListadoProductos as List<ProductoModel>) { <tr> <td>@p.IdProducto</td> <td>@p.NombreProducto</td> <td>@p.NombreProveedor</td> <td>@p.NombreCategoria</td> <td>@p.CantidadPorUnidad</td> <td>@p.PrecioUnidad</td> </tr> } </tbody> </table>Espero te haya servido este post, si deseas puedes descargar la solución .
No hay comentarios:
Publicar un comentario