Тип Enum не сопоставляется с таблицей БД

Я использую EF 5.0 Code First в библиотеке .NET 4. Попытка установить для члена класса тип Enum, но он не сохраняется в базе данных, и когда EF создает базу данных на основе кода, не возникает исключения времени выполнения.

Конечно, когда я пытаюсь выполнить запрос к этому Enum:

var departments = db.Departments
                    .Where(dep => dep.Name == DepartmentNames.English);

Я получаю исключение, говорящее:

The specified type member 'Name' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Я использую пример использования Enum от Microsoft: http://msdn.microsoft.com/en-us/data/hh859576.aspx

Члены Enum еще не поддерживаются? Отличается ли EF 5.0 при размещении в среде .NET 4 и при размещении в среде .NET 5?


person Ofer Zelig    schedule 15.11.2012    source источник


Ответы (1)


Перечисления впервые появились в компонентах EF 5, которые находятся в .NET Framework 4.5 (System.Data.Entity.dll). Если вы используете EF5, но нацелены на .NET Framework 4, перечисления не поддерживаются, поскольку они не поддерживаются библиотекой System.Data.Entity.dll, которая является частью .NET Framework 4. Итак, да, EF5 на .NET Framework 4 — это область ограничена по сравнению с EF5 в .NET Framework 4.5. Некоторые другие функции, которые доступны, когда вы ориентируетесь на .NET Framework 4.5, но недоступны, когда вы ориентируетесь на .NET Framework 4, — это пространственные типы, функции с табличным значением, хранимые процедуры, возвращающие несколько наборов результатов, и еще несколько. Альтернативой является переход на EF6 (альфа-версия выпущена несколько недель назад), которая не зависит от System.Data.Entity.dll и, следовательно, поддерживает все функции, поставляемые в EF5 как для .NET Framework 4.5, так и для .NET Framework 4, а также некоторые больше (например, асинхронность в .NET Framework 4.5). EF6 — это проект Microsoft с открытым исходным кодом, и вы можете найти все подробности здесь: http://entityframework.codeplex.com/

person Pawel    schedule 18.11.2012