Model First

В этом видео и пошаговом руководстве представлены общие сведения о Model First разработке с помощью Entity Framework. Model First позволяет создать новую модель с помощью Entity Framework Designer, а затем создать схему базы данных на основе модели. Модель хранится в EDMX-файле (расширение EDMX) и может быть просмотрена и изменена в Entity Framework Designer. Классы, с которыми вы взаимодействуете в приложении, автоматически создаются из файла EDMX.

Просмотреть видео

В этом видео и пошаговом руководстве представлены общие сведения о Model First разработке с помощью Entity Framework. Model First позволяет создать новую модель с помощью Entity Framework Designer, а затем создать схему базы данных на основе модели. Модель хранится в EDMX-файле (расширение EDMX) и может быть просмотрена и изменена в Entity Framework Designer. Классы, с которыми вы взаимодействуете в приложении, автоматически создаются из файла EDMX.

Представляет: Роуэн Миллер (Rowan Miller)

Видео: WMVMP4WMV (ZIP)

Предварительные требования

для выполнения инструкций этого пошагового руководства необходимо установить Visual Studio 2010 или Visual Studio 2012.

если вы используете Visual Studio 2010, также необходимо установить NuGet .

1. Создание приложения

Чтобы не усложнять, мы создадим простое консольное приложение, которое использует Model First для доступа к данным:

  • Открытие Visual Studio
  • Файл — создать > Project...
  • выберите Windows в меню слева и в консольном приложении .
  • Введите моделфирстсампле в качестве имени
  • Нажмите кнопку ОК

2. Создание модели

мы будем использовать Entity Framework Designer, который входит в состав Visual Studio, для создания нашей модели.

  • Project — Добавить новый элемент...

  • выберите данные в меню слева, а затем ADO.NET EDM

  • Введите блоггингмодел в качестве имени и нажмите кнопку " ОК", чтобы запустить мастер EDM

  • Выберите пустую модель и нажмите кнопку Готово .

    Create Empty Model

Entity Framework Designer открывается с пустой моделью. Теперь можно приступить к добавлению сущностей, свойств и ассоциаций в модель.

  • Щелкните правой кнопкой мыши область конструктора и выберите пункт Свойства .

  • В окно свойств изменить имя контейнера сущностей на BloggingContextэто имя производного контекста, который будет создан автоматически, контекст представляет сеанс с базой данных, что позволяет запрашивать и сохранять данные

  • Щелкните правой кнопкой мыши область конструктора и выберите команду Добавить новую сущность...

  • Введите в качестве имени сущности блог и блогид в качестве имени ключа и нажмите кнопку ОК .

    Add Blog Entity

  • Щелкните правой кнопкой мыши новую сущность в области конструктора и выберите Добавить новое скалярное свойство, введите Name в качестве имени свойства.

  • Повторите эту процедуру, чтобы добавить свойство URL-адреса .

  • Щелкните правой кнопкой мыши свойство URL-адрес в области конструктора и выберите пункт свойства, в окно свойств изменить значение параметра Nullable на true, чтопозволит нам сохранить блог в базе данных, не назначив ему URL-адрес .

  • Используя только что знакомые методы, добавьте сущность POST со свойством ключа постид .

  • Добавление скалярных свойств Title и Content в сущность POST

Теперь, когда у нас есть пара сущностей, пришло время добавить ассоциацию (или связь) между ними.

  • Щелкните правой кнопкой мыши область конструктора и выберите команду Добавить новую связь...

  • Сделать один конец точки связи в блоге , используя кратность одной и другой конечной точки для публикации с кратностью. это означает, что в блоге имеется много записей, а запись принадлежит одному блогу .

  • Убедитесь, что флажок Добавить свойства внешнего ключа в сущность ' POST ' установлен, и нажмите кнопку ОК .

    Add Association MF

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

Model Initial

дополнительные действия в Visual Studio 2010

при работе в Visual Studio 2010 необходимо выполнить некоторые дополнительные действия по обновлению до последней версии Entity Framework. Обновление важно, так как оно предоставляет доступ к улучшенной поверхности API, которая гораздо проще в использовании, а также последние исправления ошибок.

Сначала необходимо получить последнюю версию Entity Framework из NuGet.

  • Project — управление пакетами NuGet...если у вас нет параметра управление пакетами NuGet... следует установить последнюю версию NuGet
  • Выбор вкладки "в сети "
  • Выберите пакет EntityFramework
  • Щелкните Установить.

Далее необходимо поменять модель, чтобы создать код, который использует API DbContext, который появился в более поздних версиях Entity Framework.

  • Щелкните правой кнопкой мыши пустое место в модели в конструкторе EF и выберите пункт Добавить элемент создания кода...

  • В меню слева выберите шаблоны в Интернете и выполните поиск по запросу DbContext

  • Выберите генератор EF 5. x DbContext для C#, введите блоггингмодел в качестве имени и нажмите кнопку добавить .

    DbContext Template

3. Создание базы данных

С учетом нашей модели Entity Framework может вычислить схему базы данных, которая позволит хранить и получать данные с помощью модели.

сервер базы данных, установленный с Visual Studio, отличается в зависимости от установленной версии Visual Studio.

  • при использовании Visual Studio 2010 будет создаваться база данных SQL Express.
  • если вы используете Visual Studio 2012, то будете создавать базу данных LocalDB .

Давайте создадим базу данных.

  • Щелкните правой кнопкой мыши область конструктора и выберите команду создать базу данных из модели...

  • щелкните создать соединение... и укажите либо LocalDB, либо SQL Express, в зависимости от используемой версии Visual Studio введите моделфирст. блога в качестве имени базы данных.

    LocalDB Connection MF

    Sql Express Connection MF

  • Нажмите кнопку ОК , и появится запрос на создание новой базы данных, выберите Да .

  • Нажмите кнопку Далее , и Entity Framework Designer вычислит сценарий для создания схемы базы данных.

  • После отображения скрипта нажмите кнопку Готово , и скрипт будет добавлен в проект и открыт.

  • щелкните скрипт правой кнопкой мыши и выберите команду выполнить. вам будет предложено указать базу данных для подключения, указать LocalDB или SQL Server Express в зависимости от используемой версии Visual Studio

4. чтение & данных записи

Теперь, когда у нас есть модель, пришло время использовать ее для доступа к некоторым данным. Классы, которые мы будем использовать для доступа к данным, создаются автоматически на основе файла EDMX.

этот снимок экрана относится к Visual Studio 2012, если вы используете Visual Studio 2010 файлы BloggingModel.tt и BloggingModel.Context.tt будут находиться непосредственно в проекте, а не вложены в EDMX-файл.

Generated Classes

Реализуйте метод Main в Program. cs, как показано ниже. Этот код создает новый экземпляр нашего контекста, а затем использует его для вставки нового блога. Затем он использует запрос LINQ для получения всех блогов из базы данных, упорядоченного в алфавитном порядке по названию.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Теперь можно запустить приложение и протестировать его.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

5. Работа с изменениями модели

Пришло время внести некоторые изменения в нашу модель, при внесении этих изменений нам также потребуется обновить схему базы данных.

Начнем с добавления новой сущности пользователя в нашу модель.

  • Добавьте новое имя сущности пользователя с именем пользователя в качестве имени ключа и строки в качестве типа свойства для ключа.

    Add User Entity

  • Щелкните правой кнопкой мыши свойство username в области конструктора и выберите пункт свойства, в окно свойств изменить значение параметра MaxLength на 50. это ограничит данные, которые могут храниться в имени пользователя, до 50 символов .

  • Добавление скалярного свойства DisplayName в сущность User

Теперь у нас есть обновленная модель, и мы готовы к обновлению базы данных для размещения нового типа сущности пользователя.

  • Щелкните правой кнопкой мыши область конструктора и выберите команду создать базу данных из модели...Entity Framework вычислит скрипт для повторного создания схемы на основе обновленной модели.
  • Нажмите кнопку Готово.
  • Вы можете получить предупреждения о перезаписи существующего скрипта DDL, а также части сопоставления и хранилища модели. для этих предупреждений нажмите кнопку Да .
  • обновленный скрипт SQL для создания базы данных будет открыт.
    Созданный скрипт удалит все существующие таблицы, а затем воссоздаст схему с нуля. Это может работать для локальной разработки, но не для принудительной отправки изменений в базу данных, которая уже была развернута. Если необходимо опубликовать изменения в базе данных, которая уже была развернута, необходимо изменить скрипт или использовать средство сравнения схем для вычисления скрипта миграции.
  • щелкните скрипт правой кнопкой мыши и выберите команду выполнить. вам будет предложено указать базу данных для подключения, указать LocalDB или SQL Server Express в зависимости от используемой версии Visual Studio

Сводка

В этом пошаговом руководстве мы рассматривали Model Firstную разработку, которая позволила нам создать модель в конструкторе EF, а затем создать базу данных из этой модели. Затем мы использовали эту модель для чтения и записи данных из базы данных. Наконец, мы обновили модель, а затем воссоздали схему базы данных в соответствии с моделью.