Si vous pouviez accepter le CAST
au lieu de CONVERT
(Et je suis presque sûr que vous le pouvez) , alors il y a une solution plus simple.
Au lieu d'appeler "SQL Server related" fonction, appelons l'abstraction, qui devrait fonctionner sur la plupart des serveurs de base de données (basé sur les dilacts NHibernate pris en charge)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Donc la Restriction
utilisé dans un WHERE
la clause pourrait ressembler à ceci :
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Et le résultat généré par NHibernate, en utilisant le dialecte SQL Server serait :
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'