Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden der integrierten SQL-Konvertierungsfunktion in nhibernate-Kriterien

Wenn Sie den CAST akzeptieren könnten statt CONVERT (Und ich bin mir fast sicher, dass Sie das können) , dann gibt es eine einfachere Lösung.

Statt "SQL Server related" aufzurufen nennen wir die Abstraktion, die auf den meisten DB-Servern funktionieren sollte (basierend auf unterstützten NHibernate-Dilacts)

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

Also die Restriction in einem WHERE verwendet Klausel könnte so aussehen:

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

Und das von NHibernate generierte Ergebnis wäre unter Verwendung des SQL Server-Dialekts:

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