C # linq SqlGeography - найти места в пределах 50 м по широте и долготе - PullRequest
1 голос
/ 10 июня 2011

У меня есть lat и long в базе данных SQL, хранящейся как 'float'

Я пытаюсь сделать следующее, где lat & lng - это C # double

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 to Entities не распознает метод «System.Data.SqlTypes.SqlDouble STDistance (Microsoft.SqlServer.Types.SqlGeography)», и этот метод нельзя преобразовать в выражение хранилища..

Есть мысли по этому поводу?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2017

Слишком поздно отвечать на этот вопрос, но для помощи сообщества.Эта проблема возникает из-за того, что Microsoft.SqlServer.Types не упоминается в вашем проекте.просто щелкните правой кнопкой мыши по ссылке и выберите Добавить ссылку, появится диалоговое окно, выберите вкладку сборок, найдите эту сборку и выберите.Проблема решена.

0 голосов
/ 10 июня 2011

Взгляните на эту тему . Мне не известны какие-либо исправления в EF4, но это не значит, что они не исправили это.

Здесь также есть статья о поведении структуры сущностей с пространственными типами.

Надеюсь, что поможет

...