2010-09-20 2 views
0

У меня есть сущность с полем типа enum, которая сохраняется как целое число в моей базе данных.Ограничение запроса NHibernate с использованием ICriteria в соответствии с перечислением перечислений

При извлечении объектов из базы данных с помощью ICriteria я хочу ограничить результаты теми, у которых поле является членом набора значений перечисления. Есть ли ограничения. В работе с коллекцией перечислений?

Следующие не работают. Должен ли я выполнять что-то вроде литья типа в разделе «limits.in» запроса?

var myEnumCollection = new MyEnum[] { MyEnum.One }; 
return FindAll<MyType>(Restrictions.In("EnumProperty", myEnumCollection)); 

FindAll является методом инкапсуляции

criteria.GetExecutableCriteria(Session).List<MyType>() 
+0

Несколько вещей могут помочь вам получить ответ здесь ... 1) Опубликовать сопоставление для вашего свойства enum, 2) Разместить полученный sql, который генерируется этим запросом критики. – DanP

+0

У меня такая же проблема, как у вас (я преобразовал свой enum в int, и все же я получаю сообщение об ошибке «Нельзя использовать коллекции с InExpression». Поскольку вопрос был очень старым, мне интересно, нашли ли вы решение ? Благодаря – Beatles1692

ответ

0

Моего начального предположения будет то, что вам нужно для сравнения с целочисленными значениями членов перечислений (при условии, что вы картографирование перечисления как целое число); так что-то вроде:

var myEnumCollection = new int[] { MyEnum.One }; 
return FindAll<MyType>(Restrictions.In("EnumProperty", myEnumCollection)); 

Может быть, решение, которое вам нужно. Если вы обновите свой пост с подробной информацией (сопоставление элемента перечисления и sql, сгенерированного запросом), я могу оказать дополнительную помощь.

 Смежные вопросы

  • Нет связанных вопросов^_^