CAST
を受け入れることができれば CONVERT
の代わりに (そして、私はあなたができると確信しています) 、より簡単な解決策があります。
「SQL Server 関連」と呼ぶ代わりに 関数、抽象化を呼び出しましょう。これは、ほとんどの DB サーバーで動作するはずです (サポートされている NHibernate dilacts に基づく)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
だから Restriction
WHERE
で使用 句は次のようになります:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
そして、NHibernate が SQL Server ダイアレクトを使用して生成した結果は次のようになります:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'