В 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 — Затем щелкните правой кнопкой мыши в окне дизайнера и выберите Добавить → Объект.
Откроется диалоговое окно New Entity, как показано на следующем рисунке.
Шаг 10 — Введите Отдел в качестве имени сущности и DeptID в качестве имени свойства, оставьте тип свойства как Int32 и нажмите OK.
Шаг 11 — Щелкните правой кнопкой мыши объект и выберите Добавить новый → Скалярное свойство.
Шаг 12 — Переименуйте новое свойство в DeptName.
Шаг 13 — Измените тип нового свойства на Int32 (по умолчанию новое свойство имеет тип String).
Шаг 14 — Чтобы изменить тип, откройте окно «Свойства» и измените свойство «Тип» на Int32.
Шаг 15 — В Entity Framework Designer щелкните правой кнопкой мыши свойство Name, выберите Convert to enum.
Шаг 16. В диалоговом окне «Добавить тип перечисления» введите DepartmentNames для имени типа перечисления, измените базовый тип на Int32, а затем добавьте следующие члены к типу: физика, химия, компьютер и экономика.
Шаг 17 — Нажмите Ok.
Если вы переключитесь в окно «Обозреватель моделей», вы увидите, что тип также был добавлен в узел Enum Types.
Давайте сгенерируем базу данных из модели, выполнив все шаги, упомянутые в главе «Подход Model First».
Шаг 1 — Щелкните правой кнопкой мыши поверхность Entity Designer и выберите «Создать базу данных из модели».
Откроется диалоговое окно «Выбор подключения к данным» мастера создания базы данных.
Шаг 2 — Нажмите кнопку «Новое соединение».
Шаг 3 — Введите имя сервера и EnumDemo для базы данных и нажмите OK.
Шаг 4 — Появится диалоговое окно с вопросом, хотите ли вы создать новую базу данных, нажмите «Да».
Шаг 5 — Нажмите Далее, и Мастер создания базы данных создаст язык определения данных (DDL) для создания базы данных. Теперь нажмите Готово.
Шаг 6 — Щелкните правой кнопкой мыши на редакторе T-SQL и выберите «Выполнить».
Шаг 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
Мы рекомендуем вам выполнить вышеприведенный пример пошагово для лучшего понимания.