sql >> Base de Datos >  >> RDS >> Sqlserver

Uso de la función Convert sql incorporada en los criterios de nhibernate

Si pudieras aceptar el CAST en lugar de CONVERT (Y estoy casi seguro de que puedes) , entonces hay una solución más sencilla.

En lugar de llamar a "relacionado con SQL Server" función, llamemos a la abstracción, que debería funcionar en la mayoría de los servidores de bases de datos (según los dilactos de NHibernate admitidos)

Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))

Entonces la Restriction usado en un WHERE cláusula podría tener este aspecto:

Restrictions
    .Like (
        Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
        , "2009"
        , MatchMode.Anywhere
    )

Y el resultado generado por NHibernate, usando el dialecto de SQL Server sería:

WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'