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.

Screenshot of the Solution Explorer folder showing the Models folder highlighted in blue and the Add and Class menu items highlighted in yellow.

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.

Screenshot of the Solution Explorer window showing with the Values Controllers dot c s file highlighted in red indicating it must be deleted.

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.

Screenshot of the Solution Explorer window with the Controllers folder and the Add and Controller menu items highlighted in blue and yellow.

En el cuadro de diálogo Agregar andamiaje, seleccione "Controlador de Web API 2 con acciones que usan Entity Framework". Haga clic en Agregar.

Screenshot of the Add Scaffold dialog showing the Web A P I 2 Controller with actions using Entity Framework option highlighted in blue.

En el cuadro de diálogo Agregar controlador, haga lo siguiente:

  1. 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).
  2. Active "Usar acciones del controlador asincrónico".
  3. Deje el nombre del controlador como "AuthorsController".
  4. Haga clic en el botón más (+) situado junto a Clase de contexto de datos.

Screenshot of the Add Controller dialog showing the plus button circled in red and the Author class selected in the Model class dropdown.

En el cuadro de diálogo Nuevo contexto de datos, deje el nombre predeterminado y haga clic en Agregar.

Screenshot of the New Data Context dialog showing the default name in the New data context type field.

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 de DbContext.

Screenshot of the Solution Explorer window with the Authors Controller dot c s file and the Book Service Context dot c s file circled in red.

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.

Screenshot of the Add Controller window with the Book model class selected in the Model class dropdown menu.