NHibernate 3 - Как выполнить LIKE по id / numeric / int - PullRequest
2 голосов
/ 20 сентября 2011

В то время как SQL Server вполне удобен для выполнения:

where Id like '45%'

(id является целым числом), NH будет жаловаться, так как он все равно будет пытаться отправить сравниваемое значение в sql как SqlParameter типа int при выполнении:

q.WhereRestrictionOn(cl => cl.CompanyId).IsLike(companyIdFilter)

Так как обойти это с новым API QueryOver?

1 Ответ

7 голосов
/ 20 сентября 2011

После некоторого копания и проб и ошибок, это делает трюк:

q.Where(Expression.Like(
   Projections.Cast(
     NHibernateUtil.String,
     Projections.Property<ChangeLog>(cl => cl.CompanyId)), 
   companyIdFilter.Value.ToString(),  
   MatchMode.Start
));
...