Поделиться через


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

Примечание.

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

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

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

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

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

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

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

Представлено: Джулия Корнич

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

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

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

Настройка проекта

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

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

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

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

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

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

Добавление нового типа сущности

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

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

  1. В конструкторе Entity Framework щелкните правой кнопкой мыши свойство Name, выберите "Преобразовать в перечисление"

    Convert To Enum

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

    Add Enum Type

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

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

    Примечание.

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

При просмотре окно свойств вы заметите, что тип свойства Name был изменен на DepartmentNames, а недавно добавленный тип перечисления был добавлен в список типов.

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

Model Browser

Примечание.

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

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

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

  1. Щелкните правой кнопкой мыши пустое пространство в области конструктора сущностей и выберите "Создать базу данных из модели"
  2. В диалоговом окне "Выбор данных Подключение" мастера создания базы данных отображается кнопка "Указать "Создать Подключение ion" (localdb)\mssqllocaldb для имени сервера и EnumTest для базы данных и нажмите кнопку "ОК"
  3. Откроется диалоговое окно с запросом на создание новой базы данных, нажмите кнопку "Да".
  4. Нажмите кнопку "Далее" и мастер создания базы данных создает язык определения данных (DDL) для создания базы данных, созданной DDL отображается в диалоговом окне "Сводка" и Параметры примечания, что DDL не содержит определения таблицы, сопоставленной с типом перечисления.
  5. Нажатие кнопки " Готово" не выполняет скрипт DDL.
  6. Мастер создания базы данных выполняет следующие действия. Открывает enumTest.edmx.sql в редакторе T-SQL, создает разделы схемы хранилища и сопоставления файла EDMX, добавляя строка подключения сведения в файл конфигурации App.config.
  7. Нажмите правую кнопку мыши в редакторе T-SQL и выберите диалоговое окно "Выполнить Подключение на сервере", введите сведения о подключении из шага 2 и щелкните Подключение
  8. Чтобы просмотреть созданную схему, щелкните правой кнопкой мыши имя базы данных в SQL Server обозреватель объектов и выберите "Обновить"

Сохранение и извлечение данных

Откройте файл Program.cs, в котором определен метод Main. Добавьте следующий код в функцию Main. Код добавляет новый объект Department в контекст. Затем он сохраняет данные. Код также выполняет запрос LINQ, возвращающий отдел, в котором имя — DepartmentNames.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 и как использовать перечисления в коде.