Поддержка перечисления-конструктор EF

Примечание

Только EF5 — функции, API и т. д., обсуждаемые на этой странице, появились в Entity Framework 5. При использовании более ранней версии могут быть неприменимы некоторые или все сведения.

В этом видео и пошаговом руководстве показано, как использовать типы Enum с Entity Framework Designer. В нем также показано, как использовать перечисления в запросе LINQ.

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

Поддержка перечисления появилась в Entity Framework 5. чтобы использовать новые функции, такие как перечисления, пространственные типы данных и функции, возвращающие табличное значение, необходимо выбрать платформа .NET Framework 4,5. Visual Studio 2012 targets .net 4,5 по умолчанию.

В Entity Framework перечисление может иметь следующие базовые типы: Byte, Int16, Int32, Int64 или SByte.

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

В этом видео показано, как использовать типы Enum с Entity Framework Designer. В нем также показано, как использовать перечисления в запросе LINQ.

Представлено: Julia Корнич

Видео: WMVMP4WMV (ZIP)

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

для выполнения этого пошагового руководства необходимо установить Visual Studio 2012, Ultimate, Premium, Professional или Web Express edition.

Настройка Project

  1. откройте Visual Studio 2012
  2. В меню файл наведите указатель мыши на пункт создатьи выберите пункт Project
  3. В левой области щелкните Visual C#, а затем выберите шаблон консоли .
  4. Введите енумефдесигнер в качестве имени проекта и нажмите кнопку ОК .

Создание новой модели с помощью конструктора EF

  1. Щелкните правой кнопкой мыши имя проекта в обозреватель решений, наведите указатель на пункт Добавитьи выберите пункт новый элемент .
  2. в меню слева выберите данные , а затем в области шаблоны выберите ADO.NET EDM .
  3. Введите енумтестмодел. EDMX в поле имя файла и нажмите кнопку Добавить .
  4. На странице "Мастер EDM" в диалоговом окне Выбор содержимого модели выберите Пустая модель .
  5. Нажмите кнопку Готово.

Отобразится Entity Designer, предоставляющий область конструктора для редактирования модели.

Мастер выполняет следующие действия.

  • Создает файл Енумтестмодел. EDMX, который определяет концептуальную модель, модель хранения и сопоставление между ними. Задает свойство обработки артефакта метаданных файла EDMX, которое будет внедрено в выходную сборку, чтобы созданные файлы метаданных были внедрены в сборку.
  • Добавляет ссылку на следующие сборки: EntityFramework, System. ComponentModel. Аннотация и System. Data. Entity.
  • Создает файлы EnumTestModel.tt и EnumTestModel.Context.tt и добавляет их в EDMX файл. Эти файлы шаблонов T4 создают код, определяющий производный тип DbContext и типы POCO, которые сопоставляются с сущностями в модели EDMX.

Добавить новый тип сущности

  1. Щелкните правой кнопкой мыши пустую область в области конструктора, выберите пункт Добавить- сущность, откроется диалоговое окно Новая сущность.
  2. Укажите Отдел для имени типа и укажите DepartmentID в качестве имени ключевого свойства, оставьте тип Int32 .
  3. Нажмите кнопку ОК.
  4. Щелкните сущность правой кнопкой мыши и выберите пункт Добавить новое — скалярное свойство .
  5. Переименовать новое свойство в имя
  6. Измените тип нового свойства на Int32 (по умолчанию новое свойство имеет значение типа String), чтобы изменить тип, откройте окно свойств и измените свойство Type на Int32 .
  7. Добавьте еще одно скалярное свойство и переименуйте его в бюджет, измените тип на Decimal .

Добавление типа перечисления

  1. В Entity Framework Designer щелкните правой кнопкой мыши свойство имя и выберите преобразовать в перечисление .

    Convert To Enum

  2. В диалоговом окне Добавление перечисления введите Департментнамес в поле имя типа Enum, измените базовый тип на Int32, а затем добавьте следующие члены в тип: Английский, математика и экономические.

    Add Enum Type

  3. Нажмите кнопку ОК.

  4. Сохранение модели и сборка проекта

    Примечание

    При сборке в список ошибок могут отображаться предупреждения о несопоставленных сущностях и ассоциациях. Эти предупреждения можно игнорировать, так как после выбора создания базы данных из модели ошибки будут исчезнуть.

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

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

Model Browser

Примечание

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

Создать базу данных из модели

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

  1. Щелкните правой кнопкой мыши пустое пространство на поверхности Entity Designer и выберите пункт создать базу данных из модели .
  2. Откроется диалоговое окно Выбор подключения к данным мастера создания базы данных. Нажмите кнопку создать подключение , укажите (LocalDB) \mssqllocaldb для имени сервера и енумтест для базы данных и нажмите кнопку ОК .
  3. Появится диалоговое окно с вопросом о том, нужно ли создать новую базу данных, и нажать кнопку Да.
  4. нажмите кнопку далее , и мастер создания базы данных создаст язык описания данных (ddl) для создания базы данных. в диалоговом окне сводка и Параметры отображается созданная ddl-инструкция. в этом случае ddl не содержит определения для таблицы, сопоставленной с типом перечисления.
  5. Нажмите кнопку Готово , чтобы не выполнять скрипт DDL.
  6. мастер создания базы данных выполняет следующие действия: открывает файл енумтест. edmx. sql в редакторе T-SQL создает схему хранилища и разделы сопоставления в файле edmx добавляет сведения строки подключения в App.config
  7. щелкните правой кнопкой мыши в редакторе T-SQL и выберите пункт выполнить диалоговое окно Подключение к серверу, введите сведения о подключении на шаге 2 и нажмите кнопку Подключение
  8. чтобы просмотреть созданную схему, щелкните правой кнопкой мыши имя базы данных в SQL Server обозревателе объектов и выберите команду обновить .

Сохранение и получение данных

Откройте файл Program. cs, в котором определен метод Main. Добавьте следующий код в функцию main. Код добавляет новый объект Department в контекст. Затем данные сохраняются. Код также выполняет запрос LINQ, возвращающий отдел, имя которого — Департментнамес. English.

using (var context = new EnumTestModelContainer())
{
    context.Departments.Add(new Department{ Name = DepartmentNames.English });

    context.SaveChanges();

    var department = (from d in context.Departments
                        where d.Name == DepartmentNames.English
                        select d).FirstOrDefault();

    Console.WriteLine(
        "DepartmentID: {0} and Name: {1}",
        department.DepartmentID,  
        department.Name);
}

Скомпилируйте и запустите приложение. Программа выдает следующие результаты.

DepartmentID: 1 Name: English

чтобы просмотреть данные в базе данных, щелкните правой кнопкой мыши имя базы данных в SQL Server обозревателе объектов и выберите обновить. Затем щелкните правой кнопкой мыши таблицу и выберите Просмотр данных.

Сводка

В этом пошаговом руководстве мы рассмотрели, как сопоставлять перечисляемые типы с помощью Entity Framework Designer и как использовать перечисления в коде.