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