Учебники

Entity Framework — Поддержка Enum

В Entity Framework эта функция позволит вам определить свойство класса домена, являющегося типом enum, и сопоставить его со столбцом базы данных целочисленного типа. Затем Entity Framework преобразует значение базы данных в соответствующее перечисление и из него при запросе и сохранении данных.

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

  • Безопасность и надежность приложения повышаются при использовании перечислений.

  • Перечисление значительно усложняет пользователю ошибки, а такие проблемы, как инъекционные атаки, отсутствуют.

  • В Entity Framework перечисление может иметь следующие базовые типы:

    • Байт
    • Int16
    • Int32
    • Int64
    • SByte
  • Базовым типом элементов перечисления по умолчанию является int.

  • По умолчанию первый перечислитель имеет значение 0, а значение каждого последующего перечислителя увеличивается на 1.

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

Безопасность и надежность приложения повышаются при использовании перечислений.

Перечисление значительно усложняет пользователю ошибки, а такие проблемы, как инъекционные атаки, отсутствуют.

В Entity Framework перечисление может иметь следующие базовые типы:

Базовым типом элементов перечисления по умолчанию является int.

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

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

Шаг 1 — Создать новый проект из меню Файл → Создать → Проект.

Шаг 2 — На левой панели выберите Консольное приложение.

Создание сущности

Шаг 3 — Введите EFEnumDemo в качестве имени проекта и нажмите OK.

Шаг 4 — Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите пункт меню «Добавить» → «Новый элемент».

Шаг 5 — Выберите ADO.NET Entity Data Model на панели шаблонов.

Шаблон модели данных

Шаг 6. Введите EFEnumModel.edmx в качестве имени файла и нажмите кнопку «Добавить».

Шаг 7 — На странице мастера Entity Data Model Wizard выберите Empty EF designer Model.

Страница мастера моделей

Шаг 8 — Нажмите Готово

Шаг 9 — Затем щелкните правой кнопкой мыши в окне дизайнера и выберите Добавить → Объект.

Дизайнер Окно Entity

Откроется диалоговое окно New Entity, как показано на следующем рисунке.

Диалог нового лица

Шаг 10 — Введите Отдел в качестве имени сущности и DeptID в качестве имени свойства, оставьте тип свойства как Int32 и нажмите OK.

Шаг 11 — Щелкните правой кнопкой мыши объект и выберите Добавить новый → Скалярное свойство.

Скалярная Собственность

Шаг 12 — Переименуйте новое свойство в DeptName.

Шаг 13 — Измените тип нового свойства на Int32 (по умолчанию новое свойство имеет тип String).

Шаг 14 — Чтобы изменить тип, откройте окно «Свойства» и измените свойство «Тип» на Int32.

Тип

Шаг 15 — В Entity Framework Designer щелкните правой кнопкой мыши свойство Name, выберите Convert to enum.

Entity Framework Designer

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

Добавить Enum

Шаг 17 — Нажмите Ok.

Если вы переключитесь в окно «Обозреватель моделей», вы увидите, что тип также был добавлен в узел Enum Types.

Окно браузера модели

Давайте сгенерируем базу данных из модели, выполнив все шаги, упомянутые в главе «Подход Model First».

Шаг 1 — Щелкните правой кнопкой мыши поверхность Entity Designer и выберите «Создать базу данных из модели».

Откроется диалоговое окно «Выбор подключения к данным» мастера создания базы данных.

Шаг 2 — Нажмите кнопку «Новое соединение».

Кнопка подключения

Шаг 3 — Введите имя сервера и EnumDemo для базы данных и нажмите OK.

Шаг 4 — Появится диалоговое окно с вопросом, хотите ли вы создать новую базу данных, нажмите «Да».

Шаг 5 — Нажмите Далее, и Мастер создания базы данных создаст язык определения данных (DDL) для создания базы данных. Теперь нажмите Готово.

Шаг 6 — Щелкните правой кнопкой мыши на редакторе T-SQL и выберите «Выполнить».

TSql Editor

Шаг 7. Чтобы просмотреть сгенерированную схему, щелкните правой кнопкой мыши имя базы данных в проводнике объектов SQL Server и выберите «Обновить».

Вы увидите таблицу Отделов в базе данных.

Таблица отделов

Давайте рассмотрим следующий пример, в котором некоторые новые объекты Department добавляются в контекст и сохраняются. А потом вернуть компьютерный отдел.

class Program {

   static void Main(string[] args) {

      using (var context = new EFEnumModelContainer()) {

         context.Departments.Add(new Department { DeptName = DepartmentNames.Physics});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Computer});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Chemistry});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Economics});

         context.SaveChanges();

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

         Console.WriteLine(
            "Department ID: {0}, Department Name: {1}", 
               department.DeptID, department.DeptName
         );

         Console.ReadKey();
      }
   }
}

Когда приведенный выше код будет выполнен, вы получите следующий вывод:

Department ID: 2, Department Name: Computer

Мы рекомендуем вам выполнить вышеприведенный пример пошагово для лучшего понимания.