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 に答える