Ограничение запроса NHibernate с использованием ICriteria в соответствии с перечислением перечислений - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть объект с полем типа enum, который сохраняется в моей базе данных как целое число.

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

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

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

FindAll - это метод, инкапсулирующий

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

1 Ответ

0 голосов
/ 20 сентября 2010

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

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

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

...