#linq-to-entities #geocoding #latitude-longitude
#linq-to-entities #геокодирование #широта-долгота
Вопрос:
У меня lat и long в базе данных SQL хранятся как ‘float’
Я пытаюсь выполнить следующее, где широта и lng в C # двойные
var yourLocation = SqlGeography.Point(lat, lng, 4326);
MyConn conn = new MyConn();
var query = from p in conn.Locations
let distance = SqlGeography
.Point(p.Latitude, p.Longitude, 4326)
.STDistance(yourLocation)
.Value
where distance <= 50
select p;
return query.Distinct().ToList();
Все, что я получаю, это следующая ошибка
LINQ для объектов не распознает метод ‘System.Data.SqlTypes.SqlDouble STDistance (Microsoft.SQLServer.Типы.метод SqlGeography)’, и этот метод не может быть преобразован в выражение хранилища.
Есть мысли по этому поводу??
Ответ №1:
Взгляните на этот поток. Я не знаю о каких-либо исправлениях в EF4, но это не значит, что они его не исправляли.
Здесь также есть статья о поведении entity framework с пространственными типами.
Надеюсь, это поможет
Ответ №2:
Слишком поздно отвечать на этот вопрос, но нужна помощь сообщества. Эта проблема возникает из-за Microsoft.SQLServer.В вашем проекте нет ссылок на типы. просто щелкните правой кнопкой мыши по ссылке и выберите добавить ссылку, появится диалоговое окно выберите вкладку сборки и найдите эту сборку и выберите. Проблема решена.