Если бы Number был строкой, то было бы просто:
.Add(Restrictions.Like("Number", "some_value",MatchMode.Anywhere))
Поскольку у вас есть число, NHibernate проверит тип Number и, если вы укажете ему строку, выдаст исключение.
Не уверен, почему команда NH не предоставила перегрузку с объектом в качестве параметра и параметрами MatchMode ....
Во всяком случае, вы все еще можете сделать это так:
.Add(Expression.Sql("{alias}.Number like ?", "%2%", NHibernateUtil.String))
Редактировать
О псевдониме:
(я не могу найти, где документация говорит об этом, но вот мое понимание этого)
{псевдоним} возвращает псевдоним, используемый внутри NH для самого последнего CreateCriteria. Так что, если у вас было:
session.CreateCriteria<User>("firstAlias")
.CreateCriteria("firstAlias.Document", "doc")
.Add(Expression.Sql("{alias}.Number like ?", "%2%",
NHibernateUtil.String)).List<User>();
{псевдоним} в этом случае будет 'doc' - поэтому вы получите: doc.Number.
Итак, всегда используйте {псевдоним} после CreateCriteria, псевдоним которого вам нужно использовать.