Aunque ahora ando inmersa en otro artículo, también relacionado con esta tecnología, he hecho un break para hablar sobre el uso de las operaciones CRUD mediante el modelo LINQtoSQL de ASP.NET MVC, ya que es un tema que se me ha solicitado varias veces a través del propio blog. Por lo tanto en este artículo vamos a ver como Crear, Leer, Actualizar y Borrar datos de nuestra base de datos, a través de nuestro modelo LINQtoSQL, ya que en un artículo anterior vimos estas mismas operaciones pero trabajando con un modelo ADO.NET Entity Data Model.
Para ello, partimos de un proyecto ASP.NET MVC 2 llamado Example1, al que añadimos una base de datos llamada ExampleDB, que cuenta con una tabla de equipos de balonmano cuyas propiedades son las siguientes TeamID, TeamName, TeamLocation. Una vez creada la base de datos pasamos a configurar el modelo que nos permita interactuar con ella. Dentro de la carpeta Models, hacemos clic con el botón derecho y seleccionamos la opción Add> New Item> LINQ to SQL Classes. Hacemos clic en Add y arrastramos nuestra tabla de datos al modelo, de forma que ya tenemos nuestro contexto de datos creado.
Una vez implementado el modelo, vamos a configurar las acciones que nos permitan trabajar con él. Para ello creamos un nuevo controlador llamado TeamController, y seleccionamos el checkbox que indica que, por defecto, se añadirán las acciones Create, Update, Delete y Details.
En primer lugar, dentro de dicho controlador:
1. Añadimos a la referencia a nuestro modelo, para poder utilizar el modelo creado.
- using Example1.Models;
2. Creamos una instancia de nuestro contexto de datos
- Model2DataContext dbteam = new Model2DataContext();
3.Mostramos nuestro contexto de datos en forma de lista mediante la acción Index()
- public ActionResult Index()
- {
- var handballteam = (from ht in dbteam.HandballTeams
- select ht).ToList();
- return View(handballteam);
- }
4.Creamos la vista correspondiente con los siguientes parámetros:
De esta forma conseguimos mostrar un listado de nuestros equipos:
El siguiente resultado de acción que vamos a configurar es la opción Create(). Para ello:
1. El método Get de la acción Create() es el que se encarga de mostrarnos el formulario de creación de un nuevo elemento. Mientras que el método Post se encarga de actualizar nuestro contexto de datos con el nuevo elemento creado. Por tanto es en este último en el que añadiremos el siguiente código:
- [HttpPost]
- public ActionResult Create([Bind(Exclude=«Id»)]HandballTeam TeamToCreate)
- {
- if (!ModelState.IsValid)
- {
- return View();
- }
- try
- {
- // TODO: Add insert logic here
- dbteam.HandballTeams.InsertOnSubmit(TeamToCreate);
- dbteam.SubmitChanges();
- return RedirectToAction(«Index»);
- }
- catch
- {
- return View(TeamToCreate);
- }
- }
2. Creamos la vista correspondiente con los parámetros que se observan en la imagen:
Continuamos, con el resultado de acción Edit(). Para ello:
1. Dentro del método Get, añadimos el siguientes código de forma que se nos muestre el elemento a editar, a partir de su id:
- public ActionResult Edit(int id)
- {
- var TeamToEdit = dbteam.HandballTeams.SingleOrDefault(x => x.TeamID == id);
- return View(TeamToEdit);
- }
2. Dentro del método Post, añadimos el siguiente código que se encargará de guardar los cambios realizados en nuestro elemento:
- [HttpPost]
- public ActionResult Edit(int id, HandballTeam TeamToEdit)
- {
- TeamToEdit = dbteam.HandballTeams.SingleOrDefault(x => x.TeamID == id);
- try
- {
- // TODO: Add update logic here
- UpdateModel(TeamToEdit);
- dbteam.SubmitChanges();
- return RedirectToAction(«Index»);
- }
- catch
- {
- return View(TeamToEdit);
- }
- }
3. Creamos la vista correspondiente con los parámetros que se observan en la imagen:
A continuación, configuramos el resultado de acción Details(). Para ello:
1. Mostramos nuestro contexto de datos en forma de lista mediante la acción Details()
- public ActionResult Details(int id)
- {
- return View(dbteam.HandballTeams.SingleOrDefault(x => x.TeamID == id));
- }
2. Creamos la vista correspondiente con los parámetros que se observan en la imagen:
Y por último configuramos el resultado de acción Delete(). Para ello:
1. Dentro del método Get, añadimos el siguientes código de forma que se nos muestre el elemento a eliminar, a partir de su Id:
- public ActionResult Delete(int id)
- {
- var TeamToDelete = dbteam.HandballTeams.SingleOrDefault(x => x.TeamID == id);
- return View(TeamToDelete);
- }
2. Dentro del método Post, añadimos el siguiente código para que se encargué de eliminar el elemento seleccionado de la base de datos:
- [HttpPost]
- public ActionResult Delete(int id, HandballTeam TeamToDelete)
- {
- TeamToDelete = dbteam.HandballTeams.SingleOrDefault(x => x.TeamID == id);
- try
- {
- // TODO: Add delete logic here
- dbteam.HandballTeams.DeleteOnSubmit(TeamToDelete);
- dbteam.SubmitChanges();
- return RedirectToAction(«Index»);
- }
- catch
- {
- return View(TeamToDelete);
- }
3. Creamos la vista correspondiente con los parámetros que se observan en la imagen:
De esta forma ya podemos interactuar con nuestra base de datos a través de nuestro modelo y las operaciones creadas.
Aquí os dejo el código del proyecto utilizado para este artículo.
Al igual que este artículo ha surgido gracias a los comentarios de los lectores del blog os animo a que contribuyáis con vuestras dudas o inquietudes, para ir generando contenido de interés. 😉