Deseo poder llamar a una función personalizada llamada "fecha_ reciente" como parte de mi HQL. De esta manera: [Date] >= recent_date()
Función SQL personalizada para el dialecto NHibernate
Creé un nuevo dialecto, heredando de MsSql2000Dialect y especificando el dialecto para mi configuración.
public class NordicMsSql2000Dialect : MsSql2000Dialect
{
public NordicMsSql2000Dialect()
{
RegisterFunction(
"recent_date",
new SQLFunctionTemplate(
NHibernateUtil.Date,
"dateadd(day, -15, getdate())"
)
);
}
}
var configuration = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2000
.ConnectionString(c => ....)
.Cache(c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>())
.Dialect<NordicMsSql2000Dialect>()
)
.Mappings(m => ....)
.BuildConfiguration();
Al llamar recent_date()
me sale el siguiente error: System.Data.SqlClient.SqlException: 'recent_date' no es un nombre de función reconocida
lo estoy usando en un comunicado donde por una asignación de HasMany como a continuación.
HasMany(x => x.RecentValues)
.Access.CamelCaseField(Prefix.Underscore)
.Cascade.SaveUpdate()
.Where("Date >= recent_date()");
¿Qué es lo que falta aquí?
Lo sentimos, por eso. Debería haber dejado en claro que "SELECT .... FROM SomeTable WHERE ..." fue solo un ejemplo. No usamos esa parte en nuestro código. –
Las respuestas dicen que .Where en su mapeo espera que el SQL puro no tenga ninguna forma de HQL. – Rashack