Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de la fonction sql Convert intégrée dans les critères nhibernate

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%'