Ich versuche, meinen Adressstandort abzufragen, um Adressen zu ermitteln, die sich innerhalb des spezifischen Bereichs befinden Radius. Unten ist mein where-Klausel und results
ist ein IEnumerable<Properties>
NHibernate-Ausnahme: Das Objekt des Typs 'NHibernate.Hql.Ast.HqlParameter' kann nicht in den Typ 'NHibernate.Hql.Ast.HqlBooleanExpression' umgewandelt werden.
Func<Address, bool> predicate = l =>
{
if (l.Location == null && l.Longitude.HasValue && l.Latitude.HasValue)
{
var point = new Point(l.Longitude.Value, l.Latitude.Value);
return point.Distance(p) <= 300;
}
return false;
};
results = results.Where(x => predicate(x.Address));
Allerdings bin ich eine Ausnahme von NHibernate als
bekommen„Kann nicht das Objekt des Typs‚NHibernate.Hql.Ast.HqlParameter‘werfen eingeben 'NHibernate.Hql.Ast.HqlBooleanExpression'.
Wie kann ich dieses Problem beheben?
Jede Hilfe ist sehr APPRE zitiert.
Ich würde vermuten, dass NHibernate Ihr Prädikat in Ihrer Datenbank über SQL nicht ausführen kann. Versuchen Sie einige einfache Typen zu verwenden, die NHibernate in sql übersetzen kann. – Rabban
Einfache Typen im Sinne? Du meinst hier 'Point' Typ? – Karthik
Etwas, das Ihre Datenbank versteht. Was sind die Arten von 'Longitude' und' Latitude'? Ist es möglich, die 'point.Distance (p)' Berechnung selbst vorzunehmen? Ich weiß nicht, wie die 'Distance()' Methode funktioniert, aber vielleicht kannst du etwas wie 'l.Longitude => 300 &&Longitude <= 300' machen. – Rabban