Monorail calcul ActiveRecord / NHibernate dans la clause WHERE
-
02-10-2019 - |
Question
Je suis en train d'obtenir des entreprises dans un certain nombre de miles d'un utilisateur, en utilisant une formule pour obtenir la distance entre le lat / long de l'entreprise et le lat / long de l'utilisateur. Voici le code:
var criteria = DetachedCriteria.For<Core.Models.Business>(); criteria.Add(Restrictions.Le(String.Format(@"(3959*acos(cos(radians({0}))*cos(radians(Latitude))*cos(radians(Longitude)-radians({1}))
+sin(radians({0}))*sin(radians(Latitude))))", coordinates.Latitude, coordinates.Longitude), radiusInMiles));
Le problème est que la méthode Restrictions.Le de ActiveRecord / NHibernate attend un nom de propriété pour le premier paramètre, donc je ne peux pas mettre une formule là-dedans. Comment pourrais-je faire quelque chose comme ça?
Merci! Justin
La solution
Essayez d'utiliser Expression.Sql
. Quelques exemples:
- NHibernate requête qui Simule SQL Remplacer Fonction
- NHibernate et MySql Mots-clés
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow