Agregar modelos y controladores
Descargar el proyecto completado
En esta sección, agregará clases de modelo que definen las entidades de la base de datos. A continuación, agregará controladores de API web que realizan operaciones CRUD en esas entidades.
Agregar clases de modelo
En este tutorial, crearemos la base de datos mediante el enfoque "Code First" para Entity Framework (EF). Con Code First, se escriben clases de C# que corresponden a tablas de base de datos y EF crea la base de datos. (Para obtener más información, consulte Enfoques de desarrollo de Entity Framework).
Comenzaremos definiendo nuestros objetos de dominio como POCO (objetos CLR antiguos sin formato). Crearemos los siguientes POCO:
- Autor
- Book
En el Explorador de soluciones, haga clic con el botón derecho en la carpeta Modelos. Seleccione Agregar y, a continuación, seleccione Clase. Asigne Author
como nombre de la clase.
Reemplace todo el código reutilizable en Author.cs por el código siguiente.
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace BookService.Models
{
public class Author
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
}
Agregue otra clase llamada Book
con el siguiente código.
using System.ComponentModel.DataAnnotations;
namespace BookService.Models
{
public class Book
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
public string Genre { get; set; }
// Foreign Key
public int AuthorId { get; set; }
// Navigation property
public Author Author { get; set; }
}
}
Entity Framework usará estos modelos para crear tablas de base de datos. Para cada modelo, la propiedad Id
se convertirá en la columna de clave principal de la tabla de base de datos.
En la clase Libro, AuthorId
define una clave externa en la tabla Author
. (Para simplificar, asumo que cada libro tiene un único autor). La clase Libro también contiene una propiedad de navegación a los Author
relacionados. Puede usar la propiedad de navegación para acceder a los Author
relacionados en el código. Más información sobre las propiedades de navegación en la parte 4, Controlar las relaciones de entidad.
Agregar controladores de API web
En esta sección, agregaremos controladores de API web que admiten operaciones CRUD (crear, leer, actualizar y eliminar). Los controladores usarán Entity Framework para comunicarse con la capa de base de datos.
En primer lugar, puede eliminar el archivo Controllers/ValuesController.cs. Este archivo contiene un controlador de API web de ejemplo, pero no lo necesita para este tutorial.
A continuación, compile el proyecto. El andamiaje de API web usa la reflexión para encontrar las clases de modelo, por lo que necesita el ensamblado compilado.
En el Explorador de soluciones, haga clic con el botón derecho en la carpeta Controllers. Seleccione Agregar y, a continuación, seleccione Controlador.
En el cuadro de diálogo Agregar andamiaje, seleccione "Controlador de Web API 2 con acciones que usan Entity Framework". Haga clic en Agregar.
En el cuadro de diálogo Agregar controlador, haga lo siguiente:
- En la lista desplegable Clase de modelo, seleccione la clase
Author
. (Si no lo ve en la lista desplegable, asegúrese de haber creado el proyecto). - Active "Usar acciones del controlador asincrónico".
- Deje el nombre del controlador como "AuthorsController".
- Haga clic en el botón más (+) situado junto a Clase de contexto de datos.
En el cuadro de diálogo Nuevo contexto de datos, deje el nombre predeterminado y haga clic en Agregar.
Haga clic en Agregar para completar el cuadro de diálogo Agregar controlador. El cuadro de diálogo agrega dos clases al proyecto:
AuthorsController
define un controlador de API web. El controlador implementa la API de REST que los clientes usan para realizar operaciones CRUD en la lista de autores.BookServiceContext
administra objetos de entidad durante el tiempo de ejecución, lo que incluye rellenar los objetos con datos de una base de datos, el seguimiento de cambios y la persistencia de datos en la base de datos. Hereda deDbContext
.
En este punto, vuelva a compilar el proyecto. Ahora siga los mismos pasos para agregar un controlador de API para entidades Book
. Esta vez, seleccione Book
para la clase de modelo y seleccione la clase existente BookServiceContext
para la clase de contexto de datos. (No cree un nuevo contexto de datos). Haga clic en Agregar para agregar el controlador.