NHibernate 3 - 如何在id / numeric / int上执行LIKE

时间:2011-09-20 11:18:03

标签: queryover nhibernate-3

虽然SQL Server非常适合做:

where Id like '45%'

(id是一个int),NH会抱怨,因为在执行时它仍会尝试将比较值作为int类型的SqlParameter发送到sql中:

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

那么如何使用新的QueryOver API绕过它呢?

1 个答案:

答案 0 :(得分:7)

经过一番挖掘和反复试验后,这就解决了这个问题:

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