2

虽然 SQL Server 非常适合做:

where Id like '45%'

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

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

那么如何使用新的 QueryOver API 来解决这个问题呢?

4

1 回答 1

8

经过一番挖掘和反复试验,这可以解决问题:

q.Where(Expression.Like(
   Projections.Cast(
     NHibernateUtil.String,
     Projections.Property<ChangeLog>(cl => cl.CompanyId)), 
   companyIdFilter.Value.ToString(),  
   MatchMode.Start
));
于 2011-09-20T11:18:50.643 回答