Принимая этот класс
class MyEntity
{
//...
public IList<int> Integers { get; private set; }
}
Просто отобразите это как набор.
<class name="MyEntity">
<!-- ... -->
<set name="Integers" table="MyEntity_Integers">
<key column="MyEntity_FK"/>
<element type="Int32" column="Value"/>
</set>
</class>
Вы можете попробовать отфильтровать коллекцию по:
from MyEntity e
where e.Integers in (:set)
and size(e.Integers) = :setSize
Это, вероятно, не очень быстро.
Совершенно другой подход: хранить целые числа в некоторой сериализованной форме в одном текстовом поле.
Вы можете написать свой собственный пользовательский тип NHibernate. Сортируйте целые числа перед сохранением. Вы можете хранить их в формате, подобном "2;45;78;898"
. Фильтрация будет очень быстрой, потому что она просто соответствует строке. Изменить коллекцию в базе данных может быть сложно. Другая проблема заключается в том, что длина столбца ограничена.
Вот пример реализации типа пользователя NHibernate.