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

Скачивание завершенного проекта

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

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

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

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

  • Автор
  • Книга

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

Снимок экрана: папка обозревателя решений, показывающая папку

Замените весь стандартный код в 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 . (Для простоты я предполагаю, что каждая книга имеет одного автора.) Класс книги также содержит свойство навигации для связанного Authorобъекта. Свойство навигации можно использовать для доступа к связанному Author в коде. Я говорю больше о свойствах навигации в части 4, обработке связей сущностей.

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

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

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

Снимок экрана окна обозревателя решений, на котором файл

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

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

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

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

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

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

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

Снимок экрана диалогового окна «Добавить контроллер» с отмеченной красным цветом кнопкой «плюс» и выбранным классом Author в раскрывающемся списке «Класс модели».

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

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

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

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

Снимок экрана окна обозревателя решений, где красным цветом обведены файлы AuthorsController.cs и BookServiceContext.cs.

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

Снимок экрана окна