Метка: SQL

  • Знакомство с Entity Framework Database  — MVC Урок 3

    Знакомство с Entity Framework Database — MVC Урок 3

    Первым делом давайте создадим проект.

    Файл->Создать->Проект

    И в открывшемся окне выберем тип проекта 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 представление.

    Проверим что все работает

    Теперь вы можете управлять вашими таблицами из сгенерированных контроллеров и представлений