Compartir a través de


Agregar modelos y controladores

Descargar proyecto completado

En esta sección, agregará clases de modelo que definen las entidades de 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).

Comenzamos definiendo nuestros objetos de dominio como POCOs (objetos CLR estándar). Crearemos los siguientes POCOs:

  • Autor
  • Libro

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 un nombre a la clase Author.

Captura de pantalla de la carpeta Explorador de soluciones que muestra la carpeta Modelos resaltada en azul y los elementos de menú Agregar y Clase resaltados en amarillo.

Reemplaza todo el código plantilla en Author.cs por el siguiente código.

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 denominada Book, con el código siguiente.

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 Id propiedad se convertirá en la columna de clave principal de la tabla de base de datos.

En la clase Book, AuthorId define una clave externa en la Author tabla. (Por simplicidad, supongo que cada libro tiene un solo autor). La clase book también contiene una propiedad de navegación a la relacionada Author. Puede usar la propiedad de navegación para acceder al elemento relacionado Author en el código. Digo más sobre las propiedades de navegación en la parte 4, Control de relaciones de entidades.

Adición de 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.

Captura de pantalla de la ventana del Explorador de Soluciones que muestra el archivo ValuesControllers.cs resaltado en rojo, indicando que debe eliminarse.

A continuación, compile el proyecto. La estructura de la API web utiliza la reflexión para encontrar las clases de modelo, por lo que necesita el ensamblaje compilado.

En el Explorador de soluciones, haga clic con el botón derecho en la carpeta Controladores. Seleccione Agregar y, a continuación, seleccione Controlador.

Captura de pantalla de la ventana Explorador de soluciones con la carpeta Controladores y los elementos de menú Agregar y controlador resaltados en azul y amarillo.

En el cuadro de diálogo Agregar aplicación generada, seleccione "Controlador de Web API 2 con acciones, usando Entity Framework". Haga clic en Agregar.

Captura de pantalla del cuadro de diálogo Agregar scaffolding que muestra el controlador de Web A P I 2 con acciones mediante la opción Entity Framework resaltada en azul.

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

  1. En la lista desplegable Clase de modelo , seleccione la Author clase . (Si no lo ve en la lista desplegable, asegúrese de construir el proyecto).
  2. Marque "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.

Captura de pantalla del cuadro de diálogo Agregar controlador que muestra el botón más rodeado en rojo y la clase Autor seleccionada en el menú desplegable de la clase Modelo.

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

Captura de pantalla del cuadro de diálogo Nuevo contexto de datos que muestra el nombre predeterminado en el campo Nuevo tipo de contexto de datos.

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 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 objetos con datos de una base de datos, seguimiento de cambios y conservación de datos en la base de datos. Hereda de DbContext.

Captura de pantalla de la ventana del Explorador de Soluciones con el archivo Authors Controller punto c s y el archivo Book Service Context punto c s en círculo en rojo.

En este momento, compile de nuevo el proyecto. Ahora siga los mismos pasos para agregar un controlador de API para Book las entidades. 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.

Captura de pantalla de la ventana Agregar controlador con la clase Book model seleccionada en el menú desplegable Clase de modelo.