Руководство. Начало работы с EF Database First using MVC 5
С помощью MVC, Entity Framework и ASP.NET формирования шаблонов можно создать веб-приложение, предоставляющее интерфейс для существующей базы данных. В этой серии руководств показано, как автоматически создавать код, который позволяет пользователям отображать, изменять, создавать и удалять данные, хранящееся в таблице базы данных. Созданный код соответствует столбцам в таблице базы данных. В последней части серии вы узнаете, как добавлять заметки к данным в модель данных для указания требований к проверке и форматирования отображения. Когда все будет готово, вы можете перейти к статье Azure, чтобы узнать, как развернуть приложение .NET и базу данных SQL для Служба приложений Azure.
В этом руководстве показано, как начать работу с существующей базой данных и быстро создать веб-приложение, позволяющее пользователям взаимодействовать с данными. Для создания веб-приложения используется Entity Framework 6 и MVC 5. Функция формирования шаблонов ASP.NET позволяет автоматически создавать код для отображения, обновления, создания и удаления данных. С помощью средств публикации в Visual Studio можно легко развернуть сайт и базу данных в Azure.
Эта часть серии посвящена созданию базы данных и заполнению ее данными.
Эта серия была написана при участии Тома Дикстра и Рика Андерсона. Она была улучшена на основе отзывов пользователей в разделе комментариев.
Изучив это руководство, вы:
- Настройка базы данных
Предварительные требования
Настройка базы данных
Чтобы имитировать существующую базу данных, сначала создайте базу данных с предварительно заполненными данными, а затем создадите веб-приложение, которое подключается к базе данных.
Это руководство было разработано с использованием LocalDB в Visual Studio 2017. Вы можете использовать существующий сервер базы данных вместо LocalDB, но в зависимости от версии Visual Studio и типа базы данных все средства обработки данных в Visual Studio могут не поддерживаться. Если эти средства недоступны для вашей базы данных, может потребоваться выполнить некоторые действия для конкретной базы данных в наборе управления для вашей базы данных.
Если у вас возникли проблемы с инструментами базы данных в вашей версии Visual Studio, убедитесь, что установлена последняя версия инструментов для баз данных. Сведения об обновлении или установке средств базы данных см. в статье Microsoft SQL Server Data Tools.
Запустите Visual Studio и создайте проект базы данных SQL Server. Назовите проект ContosoUniversityData.
Теперь у вас есть пустой проект базы данных. Чтобы убедиться, что эту базу данных можно развернуть в Azure, вы настроите Azure SQL Database в качестве целевой платформы для проекта. Установка целевой платформы не приводит к фактическому развертыванию базы данных; это означает только, что проект базы данных проверит совместимость структуры базы данных с целевой платформой. Чтобы задать целевую платформу, откройте свойства проекта и выберите База данных SQL Microsoft Azure для целевой платформы.
Таблицы, необходимые для работы с этим руководством, можно создать, добавив скрипты SQL, определяющие таблицы. Щелкните проект правой кнопкой мыши и добавьте новый элемент. Выберите Таблицы и представления>Таблица и назовите его Student.
В файле таблицы замените команду T-SQL следующим кодом, чтобы создать таблицу.
CREATE TABLE [dbo].[Student] (
[StudentID] INT IDENTITY (1, 1) NOT NULL,
[LastName] NVARCHAR (50) NULL,
[FirstName] NVARCHAR (50) NULL,
[EnrollmentDate] DATETIME NULL,
PRIMARY KEY CLUSTERED ([StudentID] ASC)
)
Обратите внимание, что окно конструктора автоматически синхронизируется с кодом. Вы можете работать с кодом или конструктором.
Добавьте еще одну таблицу. На этот раз назовите его Course и используйте следующую команду T-SQL.
CREATE TABLE [dbo].[Course] (
[CourseID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Credits] INT NULL,
PRIMARY KEY CLUSTERED ([CourseID] ASC)
)
Повторите еще раз, чтобы создать таблицу с именем Enrollment.
CREATE TABLE [dbo].[Enrollment] (
[EnrollmentID] INT IDENTITY (1, 1) NOT NULL,
[Grade] DECIMAL(3, 2) NULL,
[CourseID] INT NOT NULL,
[StudentID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID])
REFERENCES [dbo].[Course] ([CourseID]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID])
REFERENCES [dbo].[Student] ([StudentID]) ON DELETE CASCADE
)
Вы можете заполнить базу данных данными с помощью скрипта, который выполняется после развертывания базы данных. Добавьте скрипт после развертывания в проект. Щелкните проект правой кнопкой мыши и добавьте новый элемент. Выберите Пользовательские скрипты>после развертывания. Можно использовать имя по умолчанию.
Добавьте следующий код T-SQL в скрипт после развертывания. Этот скрипт просто добавляет данные в базу данных, если соответствующая запись не найдена. Он не перезаписывает и не удаляет данные, введенные в базу данных.
MERGE INTO Course AS Target
USING (VALUES
(1, 'Economics', 3),
(2, 'Literature', 3),
(3, 'Chemistry', 4)
)
AS Source (CourseID, Title, Credits)
ON Target.CourseID = Source.CourseID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Title, Credits)
VALUES (Title, Credits);
MERGE INTO Student AS Target
USING (VALUES
(1, 'Tibbetts', 'Donnie', '2013-09-01'),
(2, 'Guzman', 'Liza', '2012-01-13'),
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);
MERGE INTO Enrollment AS Target
USING (VALUES
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);
Важно отметить, что скрипт после развертывания выполняется при каждом развертывании проекта базы данных. Поэтому при написании этого скрипта необходимо тщательно учитывать свои требования. В некоторых случаях может потребоваться начать заново с известного набора данных при каждом развертывании проекта. В других случаях вам может не потребоваться каким-либо образом изменять существующие данные. В зависимости от ваших требований вы можете решить, требуется ли сценарий после развертывания или что необходимо включить в скрипт. Дополнительные сведения о заполнении базы данных скриптом после развертывания см. в разделе Включение данных в проект базы данных SQL Server.
Теперь у вас есть 4 файла скрипта SQL, но нет фактических таблиц. Вы готовы развернуть проект базы данных в localdb. В Visual Studio нажмите кнопку Пуск (или F5), чтобы выполнить сборку и развертывание проекта базы данных. Перейдите на вкладку Выходные данные , чтобы убедиться, что сборка и развертывание выполнены успешно.
Чтобы увидеть, что база данных создана, откройте SQL Server обозреватель объектов и найдите имя проекта на правильном локальном сервере базы данных (в данном случае (localdb)\ProjectsV13).
Чтобы убедиться, что таблицы заполнены данными, щелкните таблицу правой кнопкой мыши и выберите пункт Просмотреть данные.
Отображается редактируемое представление данных таблицы. Например, при выборе таблицы>dbo.course>View Data вы увидите таблицу с тремя столбцами (Course, Title и Credits) и четырьмя строками.
Дополнительные ресурсы
Вводный пример разработки Code First см. в разделе начало работы с ASP.NET MVC 5. Более сложный пример см. в статье Создание модели данных Entity Framework для приложения ASP.NET MVC 4.
Рекомендации по выбору подхода Entity Framework для использования см. в статье Подходы к разработке Entity Framework.
Дальнейшие действия
Изучив это руководство, вы:
- Настройка базы данных
Перейдите к следующему руководству, чтобы узнать, как создать веб-приложение и модели данных.