Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Скачивание завершенного проекта
В этом разделе вы добавите классы моделей, определяющие сущности базы данных. Затем вы добавите контроллеры веб-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". Нажмите кнопку Добавить.
В диалоговом окне добавления контроллера сделайте следующее:
- В раскрывающемся списке класса Model выберите
Authorкласс. (Если вы не видите его в раскрывающемся списке, убедитесь, что вы создали проект.) - Установите флажок "Использовать асинхронные действия контроллера".
- Оставьте имя контроллера "AuthorsController".
- Нажмите кнопку плюс (+) рядом с классом контекста данных.
В диалоговом окне "Новый контекст данных " оставьте имя по умолчанию и нажмите кнопку "Добавить".
Нажмите кнопку "Добавить", чтобы завершить диалоговое окно "Добавить контроллер". Диалоговое окно добавляет два класса в проект:
-
AuthorsControllerопределяет контроллер веб-API. Контроллер реализует REST API, который клиенты используют для выполнения операций CRUD в списке авторов. -
BookServiceContextуправляет объектами сущностей во время выполнения, включая заполнение объектов данными из базы данных, отслеживание изменений и сохранение данных в базе данных. Он наследует отDbContext.
На этом этапе создайте проект еще раз. Теперь выполните те же действия, чтобы добавить контроллер API для Book сущностей. На этот раз выберите Book класс модели и выберите существующий BookServiceContext класс для класса контекста данных. (Не создавайте новый контекст данных.) Нажмите кнопку "Добавить ", чтобы добавить контроллер.