Первым делом давайте создадим проект.
Файл->Создать->Проект
И в открывшемся окне выберем тип проекта SQL SERVER->Проект базы данных SQL SERVER
В качестве имени проекта выберем ContosoUniversityData
Нажмем Ok.
В обозревателе решений щелкнем правой кнопкой и создадим таблицу как показано на рисунке ниже.
В открывшемся окне введем имя таблицы Student
Нажмем Добавить.
В окне Т-SQL добавим 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) )
Обратите внимание, что окно проектирование и 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) )
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) )
Добавим скрипт который выполнится после развертывания базы данных.
Оставим имя по умолчанию и добавим следующие запросы в него
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);
Этот скрипт добавит демо данные в таблицы.
Попробуем скомпилировать наш проект.
F5
В результате получаем ошибку
------ Сборка начата: проект: ContosoUniversityData, Конфигурация: Debug Any CPU ------ Не удалось выполнить отладку этого проекта, так как SQL Server не установлен на локальном компьютере. Задайте строку подключения отладки на странице свойств проекта. Ошибка: Не удалось завершить операцию. Перетаскивание уже выполняется ========== Сборка: успешно и без изменений: 0, с ошибками: 1, пропущено: 0 ========== ========== Развертывание: успешно: 0, с ошибками: 0, пропущено: 0 ==========
Для того чтобы исправить эту ошибку необходимо открыть меню Проект->Свойства
В открывшемся окне выбрать вкладку Отладка и нажать кнопку правка для строки целевого назначения
После чего выбрать название подключения с нашей базой данных
После этого поле строка целевого назначения будет заполнено.
Data Source=DESKTOP-K15S51F;Initial Catalog=ContosoUniversityData;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True
Снова попробуем собрать наш проект F5
Теперь база данных создана вместе с таблицами и данными.
База данных создана. Переходим ко второму этапу.
Создадим новый проект MVC
В нашем проекте мы используем Entity Framework 6.1
Нам необходимо проверить его версию в NU Get управление решениями.
Откроем это окно и проверим версию Entity Framework
У нас все отлично.
Теперь нам нужно добавить модель для работы с базами данных.
В обозревателе решений правый клик по папке Models добавить новый элемент
В открывшемся окне выбираем ADO.NET EDM
Назовем файл
ContosoModel
Далее запускаем конструктор из базы данных нажимаем далее
Выбираем MS SQL Сервер
Выбираем сервер и базу данных
Проверяем подключение
Нажимаем Ок
Строка подключения создана
Выбираем все таблицы для создания модели
Теперь вы видите модели автоматически сгенерированные из базы данных
Добавление шаблонных элементов в Controller.
Выбираем тип контроллера как на картинке
Заполняем данные как показано ниже
Теперь созданы классы. Если вы получили ошибку то нажмите F5 и повторите процесс
Создайте аналогичные контроллеры для остальных таблиц
Добавим ссылки в наш проект для открытия новых представлений сгенерированных мастером.
<div> @Html.ActionLink("List of students", "Index", "Students")<br /> @Html.ActionLink("List of enrollments", "Index", "Enrollments") </div>
Добавим этот код в Index представление.
Проверим что все работает
Теперь вы можете управлять вашими таблицами из сгенерированных контроллеров и представлений