Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Usando a função sql Convert incorporada em critérios nhibernate


Se você pudesse aceitar o CAST em vez de CONVERT (E tenho quase certeza de que você pode) , então existe uma solução mais direta.

Em vez de chamar "SQL Server related" função, vamos chamar a abstração, que deve estar funcionando na maioria dos servidores de banco de dados (baseado em dilacts NHibernate suportados)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))

Portanto, a Restriction usado em um WHERE cláusula poderia ficar assim:
Restrictions
    .Like (
        Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
        , "2009"
        , MatchMode.Anywhere
    )

E o resultado gerado pelo NHibernate, usando o dialeto do SQL Server seria:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'