Сначала модель

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

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

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

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

Видео: WMV MP4 | WMV | (ZIP)

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

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

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

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

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

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

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

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

  • Проект —> добавление нового элемента...

  • Выберите данные из меню слева, а затем ADO.NET модель данных сущности

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

  • Нажмите кнопку "Пустая модель" и нажмите кнопку "Готово"

    Create Empty Model

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

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

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

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

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

    Add Blog Entity

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

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

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

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

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

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

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

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

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

    Add Association MF

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

Model Initial

Дополнительные шаги в Visual Studio 2010

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

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

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

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

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

  • Выберите онлайн-шаблоны в меню слева и найдите DbContext

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

    DbContext Template

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

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

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

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

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

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

  • Щелкните Создать Подключение... и укажите LocalDB или SQL Express в зависимости от используемой версии Visual Studio, введите ModelFirst.Blogging в качестве имени базы данных.

    LocalDB Connection MF

    Sql Express Connection MF

  • Нажмите кнопку "ОК ", и вам будет предложено создать новую базу данных, нажмите кнопку "Да"

  • Выберите "Далее ", а конструктор Entity Framework вычислит скрипт для создания схемы базы данных

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

  • Щелкните скрипт правой кнопкой мыши и выберите "Выполнить", вам будет предложено указать базу данных для подключения, указать 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

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

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

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

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

Итоги

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