CRUD Con EntityFramework y Linq
Vamos a crear un CRUD con EntityFramweork y Linq en ASP.Net Core MVC, la base de datos que voy a utilizar es un SQL Server.
Para empezar voy a enseñar las tablas que voy a utilizar:
Tabla Producto:
Tabla Fabricante:
Como crear el proyecto
Bien, vamos a crear ahora nuestro proyecto en Visual Studio 2019 (En mi caso), y vamos a seleccionar ASP.NET Core Web App (Model-View-Controller)
Cuando se termine de crear el proyecto procederemos a añadir los NuGet que vamos a utilizar que son los siguientes es muy importante que los NuGet sean de la versiones 5.0 ya que es la versión de Net Framework que vamos a utilizar:
Después de instalar los NuGet vamos a Mapear las tablas que vamos a utilizar, en la carpeta Models vamos a crear en mi caso 2 clases que son las tablas que vamos a utilizar.
Es importante importar las librerías de System.ComponentModel.DataAnnotations y System.ComponentModel.DataAnnotations.Schema
Después de Mapear las tablas de nuestra base de datos vamos a crear una carpeta en el proyecto llamada Data y crear una clase que en mi caso voy a llamar TiendaContext.cs y haremos que herede de DbContext y procedemos a importar la librería de EntityFramworkCore
Después de crear la clase de TiendaContext vamos a crear una nueva carpeta llamada Repositories y una clase llamada RepositoryTienda que es la clase donde vamos a utilizar todas las consultas linq a la base de datos.
Añadiremos el contexto a esta clase a través de inyección de dependencias
Después de crear la clase vamos a crear las conexiones a la base de datos, necesitamos la cadena de conexión a la base de datos y la vamos a añadir a appsetting.json:
Ahora vamos a resolver las inyecciones de dependencias en startup.cs, añadiremos estas 3 líneas:
Cuando ya hemos terminado de añadir las líneas ahora empezaremos creando un nuevo controller en mi caso lo voy a llamar TiendaController y añadimos el Repository en el constructor
CONSULTAS DE SELECCION CON LINQ
Y creamos un nuevo IActionResult donde vamos a cargar la lista de fabricantes de la base de datos
Como vemos utilizamos el método GetFabricantes del repository en el que usamos la consulta linq para obtener todos los fabricantes
En mi caso voy a crear la vista de ListadoFabricantes con scaffolding, hago unas pequeñas modificaciones y añado un botón para cargar los artículos de cada fabricante.
Ahora creamos otro IActionResult en el controller que cargue el listado de artículos por fabricante:
Creamos la consulta linq para cargar los productos por fabricante:
Creamos la vista con scaffolding para ver los productos:
Añadir registros con Linq
Para crear un nuevo producto utilizamos una nueva vista con un formulario donde vamos a añadir los datos:
Desde el controller Creamos los dos IActionResult con una vista para ver y otra para guardar los datos con el método HttpPost:
El código para añadir un nueva linea en la base de datos es fácil con Linq, creamos un nuevo producto y lo guardamos en el context de productos.
Eliminar datos con Linq
Creamos la vista de EliminarProducto con un form que mandará el id del producto a eliminar:
El código del repository es sencillo, recuperamos el objeto producto con un método en el repo y lo eliminamos del dbset:
Editar un producto
Para editar los productos necesitaremos su id y recuperaremos el objeto con el método anterior de FindProducto
Simplemente cogemos el producto y cambiamos su nombre y precio que son los únicos datos que podemos cambiar.
Autor/a: Agustin Campos Martinez
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2021-2022
Código / recursos utilizados / Otros datos de interés: https://github.com/AgusCM4/ProyectoPostNetCoreAgustinCampos.git