Se Numero fosse una stringa, allora sarebbe facile:
.Add(Restrictions.Like("Number", "some_value",MatchMode.Anywhere))
Dal momento che si dispone di un numero, NHibernate controllerà il tipo di numero e se si dà una stringa si getterà un eccezione.
Non
sicuro perché la squadra NH non ha fornito un sovraccarico con oggetto come parametro e un parametri MatchMode ....
In ogni caso, si può ancora fare in questo modo:
.Add(Expression.Sql("{alias}.Number like ?", "%2%", NHibernateUtil.String))
Modifica
circa l'alias:
(non riesco a trovare dove i colloqui documentazione su questo ma qui è m comprensione di esso)
{alias} restituisce l'alias utilizzato all'interno da NH per il più recente CreateCriteria. Quindi, se hai avuto:
session.CreateCriteria<User>("firstAlias")
.CreateCriteria("firstAlias.Document", "doc")
.Add(Expression.Sql("{alias}.Number like ?", "%2%",
NHibernateUtil.String)).List<User>();
{alias} in questo caso sarebbe 'doc' - così si finirebbe con: slezionare.
Quindi, utilizzare sempre {alias} dopo CreateCriteria il cui alias è necessario utilizzare.
eccellente, grazie. per l'alias dell'espressione sql ... ho usato "this_.Number" è ok, sono sicuro che NHibernate userà sempre this_.? –
perché ho fatto alias i miei criteri con "wi" - session.CreateCriteria ("wi") - ma non posso usare "wi.Number" nell'espressione sql perché lo inserisce letteralmente nel T-SQL (se quello ha senso). –
e rileva "wi" all'interno delle normali chiamate di creazione dei criteri effettivamente convertite in "questo_" nel T-SQL inviato al server ho proseguito e ho inserito l'alias nell'espressione sql in "this_.Number" –