У меня есть класс (созданный EF из моей базы данных), который имеет поле, являющееся флагом. Поле хранится в базе данных как int в столбце с именем CategoryEnum. У меня есть перечисление, которое определяет допустимые значения флага:
[Flags]
public enum RuleCategories
{
None = 0x0000,
ApplicantBased = 0x0001,
LocationBased = 0x0002,
PolicyBased = 0x0004,
PropertyBased = 0x0008
}
Когда я пытаюсь получить объекты, используя LINQ to Entities
var allRules = from r in context.Rules
where ((r.CategoryEnum & (int)categories) != 0)
select r;
Я получаю эту ошибку:
Невозможно создать постоянное значение типа 'Тип закрытия'. В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).
или, если я попытаюсь привести значение сущности к перечислению
var allRules = from r in context.Rules
where (((RuleCategories)r.CategoryEnum & categories) != 0)
select r;
Я получаю другую ошибку:
Невозможно привести тип 'System.Int32' к типу RuleCategories '. LINQ to Entities поддерживает только приведение типов примитивов Entity Data Model.
Как выбрать объекты на основе флага?
Спасибо