Использование Code First Migrations для заполнения базы данных
Скачивание завершенного проекта
В этом разделе вы будете использовать Code First Migrations в EF для заполнения базы данных тестовыми данными.
В меню Сервис выберите Диспетчер пакетов NuGet, а затем консоль диспетчера пакетов. В окне "Консоль диспетчера пакетов" введите следующую команду:
Enable-Migrations
Эта команда добавляет в проект папку с именем Migrations, а также файл кода с именем Configuration.cs в папку Migrations.
Откройте файл Configuration.cs. Добавьте следующую инструкцию using .
using BookService.Models;
Затем добавьте следующий код в метод Configuration.Seed :
protected override void Seed(BookService.Models.BookServiceContext context)
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Jane Austen" },
new Author() { Id = 2, Name = "Charles Dickens" },
new Author() { Id = 3, Name = "Miguel de Cervantes" }
);
context.Books.AddOrUpdate(x => x.Id,
new Book() { Id = 1, Title = "Pride and Prejudice", Year = 1813, AuthorId = 1,
Price = 9.99M, Genre = "Comedy of manners" },
new Book() { Id = 2, Title = "Northanger Abbey", Year = 1817, AuthorId = 1,
Price = 12.95M, Genre = "Gothic parody" },
new Book() { Id = 3, Title = "David Copperfield", Year = 1850, AuthorId = 2,
Price = 15, Genre = "Bildungsroman" },
new Book() { Id = 4, Title = "Don Quixote", Year = 1617, AuthorId = 3,
Price = 8.95M, Genre = "Picaresque" }
);
}
В окне Консоль диспетчера пакетов введите следующие команды:
Add-Migration Initial
Update-Database
Первая команда создает код, который создает базу данных, а вторая команда выполняет этот код. База данных создается локально с помощью LocalDB.
Изучение API (необязательно)
Нажмите F5, чтобы выполнить приложение в режиме отладки. Visual Studio запускает IIS Express и запускает веб-приложение. Затем Visual Studio запустит браузер и откроет домашнюю страницу приложения.
Когда Visual Studio запускает веб-проект, она назначает номер порта. На рисунке ниже указан номер порта 50524. При запуске приложения вы увидите другой номер порта.
Домашняя страница реализуется с помощью ASP.NET MVC. В верхней части страницы находится ссылка "API". По этой ссылке вы перейдете на автоматически созданную страницу справки для веб-API. (Сведения о том, как создается эта страница справки и как добавить на нее собственную документацию, см. в статье Создание страниц справки для веб-API ASP.NET.) Вы можете щелкнуть ссылки на страницу справки, чтобы просмотреть сведения об API, включая формат запроса и ответа.
API включает операции CRUD в базе данных. Ниже приведена сводка по API.
Авторы | Описание |
---|---|
GET API/authors | Получение всех авторов. |
GET api/authors/{id} | Получение автора по идентификатору. |
POST /api/authors | Создайте нового автора. |
PUT /api/authors/{id} | Обновите существующего автора. |
DELETE /api/authors/{id} | Удаление автора. |
Книги | Описание |
---|---|
GET /api/books | Получить все книги. |
GET /api/books/{id} | Получение книги по идентификатору. |
POST /api/books | Создайте новую книгу. |
PUT /api/books/{id} | Обновление существующей книги. |
DELETE /api/books/{id} | Удаление книги. |
Просмотр базы данных (необязательно)
При выполнении команды Update-Database EF создал базу данных и вызвал Seed
метод . При локальном запуске приложения EF использует LocalDB. Базу данных можно просмотреть в Visual Studio. В меню Представление выберите Обозреватель объектов SQL Server.
В диалоговом окне Подключение к серверу в поле ввода Имя сервера введите "(localdb)\v11.0". Оставьте для параметра Проверка подлинности значение "Проверка подлинности Windows". Нажмите кнопку Соединить.
Visual Studio подключается к LocalDB и отображает существующие базы данных в окне SQL Server обозреватель объектов. Вы можете развернуть узлы, чтобы просмотреть таблицы, созданные EF.
Чтобы просмотреть данные, щелкните таблицу правой кнопкой мыши и выберите Просмотреть данные.
На следующем снимку экрана показаны результаты для таблицы Книги. Обратите внимание, что EF заполнил базу данных начальными данными, а таблица содержит внешний ключ к таблице Авторы.