Добавление моделей и контроллеров

Скачать завершенный проект

В этом разделе вы добавите классы моделей, которые определяют сущности базы данных. Затем вы добавите контроллеры веб-API, которые выполняют операции CRUD с этими сущностями.

Добавление классов моделей

В этом руководстве мы создадим базу данных с помощью подхода Code First к Entity Framework (EF). С помощью Code First вы пишете классы C#, соответствующие таблицам базы данных, и EF создает базу данных. (Дополнительные сведения см. в статье Подходы к разработке Entity Framework.)

Сначала мы определяем объекты предметной области как POCOs (обычные старые объекты CLR). Мы создадим следующие объекты POCOS:

  • Автор
  • Book

В Обозреватель решений щелкните правой кнопкой мыши папку Models. Выберите Добавить, а затем — Класс. Назовите класс Author.

Снимок экрана: папка Обозреватель решений с папкой Models выделена синим цветом, а пункты меню Добавить и класс выделены желтым цветом.

Замените весь стандартный код в Файле Author.cs приведенным ниже кодом.

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; }
    }
}

Добавьте еще один класс с именем Bookсо следующим кодом.

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 будет использовать эти модели для создания таблиц базы данных. Для каждой Id модели свойство станет столбцом первичного ключа таблицы базы данных.

В классе AuthorId Book определяет внешний ключ в Author таблице. (Для простоты я предполагаю, что у каждой книги есть один автор.) Класс book также содержит свойство навигации для связанного Authorобъекта . Свойство навигации можно использовать для доступа к связанному Author в коде. Подробнее о свойствах навигации я говорю в части 4, Обработка отношений сущностей.

Добавление контроллеров веб-API

В этом разделе мы добавим контроллеры веб-API, поддерживающие операции CRUD (создание, чтение, обновление и удаление). Контроллеры будут использовать Entity Framework для взаимодействия с уровнем базы данных.

Сначала можно удалить файл Controllers/ValuesController.cs. Этот файл содержит пример контроллера веб-API, но он не нужен для работы с этим руководством.

Снимок экрана: окно Обозреватель решений с выделенным красным цветом файлом

Затем выполните сборку проекта. Формирование шаблонов веб-API использует отражение для поиска классов модели, поэтому ему требуется скомпилированная сборка.

В обозревателе решений щелкните правой кнопкой мыши папку Controllers. Выберите Добавить, а затем — Контроллер.

Снимок экрана: окно Обозреватель решений с папкой

В диалоговом окне Добавление шаблона выберите "Контроллер веб-API 2 с действиями с помощью Entity Framework". Нажмите кнопку Добавить.

Снимок экрана: диалоговое окно добавления шаблонов с контроллером Web AP I2 с действиями с использованием параметра Entity Framework, выделенного синим цветом.

В диалоговом окне Добавление контроллера выполните следующие действия.

  1. В раскрывающемся списке Класс модели выберите Author класс . (Если вы не видите его в раскрывающемся списке, убедитесь, что вы создали проект.)
  2. Установите флажок "Использовать действия асинхронного контроллера".
  3. Оставьте имя контроллера "AuthorsController".
  4. Нажмите кнопку плюс (+) рядом с элементом Класс контекста данных.

Снимок экрана: диалоговое окно добавления контроллера с кнопкой

В диалоговом окне Новый контекст данных оставьте имя по умолчанию и нажмите кнопку Добавить.

Снимок экрана: диалоговое окно

Нажмите кнопку Добавить , чтобы завершить диалоговое окно Добавление контроллера . Диалоговое окно добавляет в проект два класса:

  • AuthorsController определяет контроллер веб-API. Контроллер реализует REST API, который клиенты используют для выполнения операций CRUD со списком авторов.
  • BookServiceContext управляет объектами сущностей во время выполнения, включая заполнение объектов данными из базы данных, отслеживание изменений и сохранение данных в базе данных. Он наследует от DbContext.

Снимок экрана: окно Обозреватель решений с файлом Authors Controller dot c s и файлом контекста службы книги, обведенным красным цветом.

На этом этапе выполните сборку проекта еще раз. Теперь выполните те же действия, чтобы добавить контроллер API для Book сущностей. На этот раз выберите Book для класса модели и существующий BookServiceContext класс для класса контекста данных. (Не создавайте новый контекст данных.) Нажмите кнопку Добавить , чтобы добавить контроллер.

Снимок экрана: окно Добавления контроллера с выбранным классом модели Book в раскрывающемся меню Класс модели.