Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzo della funzione di conversione sql incorporata nei criteri di nhibernate

Se potessi accettare il CAST invece di CONVERT (E sono quasi sicuro che puoi) , allora c'è una soluzione più semplice.

Invece di chiamare "SQL Server related" funzione, chiamiamo l'astrazione, che dovrebbe funzionare sulla maggior parte dei server DB (basato sui dilatti NHibernate supportati)

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

Quindi la Restriction utilizzato in un WHERE la clausola potrebbe assomigliare a questa:

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

E il risultato generato da NHibernate, utilizzando il dialetto di SQL Server sarebbe:

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