Как я могу использовать пространственные объекты для поиска радиуса почтовых индексов?

Фон

Я пишу приложение, которое находит события в пределах определенного радиуса почтового индекса. Вы можете думать об этом как о мастере билетов, где вы вводите свой почтовый индекс, и все концерты в радиусе x появляются.

У меня есть таблица базы данных, которая имеет почтовый индекс, и каждый почтовый индекс «Широта и долгота». У меня также есть таблица «EventListings», где каждое «событие» имеет поле ZipCode.

проблема

В настоящее время я использую формулу Хаверсайна в запросе Linq-to-Entities в своем слое обслуживания, чтобы определить, какие события находятся в радиусе. Прямо сейчас я использую его как фильтр в предложении where. Я также хотел бы разместить его в предложении select, чтобы на веб-сайте я мог показать, что «это на расстоянии 4,6 миль» и т. Д.

Я не могу переместить этот код в отдельный метод C #, потому что Linq-to-Entities будет жаловаться, что он не может преобразовать его в sql, так что мне остается дублировать всю формулу в операторе select. Это очень некрасиво. Я пытался это исправить.

Что я пробовал

Я отредактировал сущность и добавил специальное скалярное свойство «DistanceFromOrigin». Затем я создал хранимую процедуру, которая вернула все данные объекта, а также жестко закодированное значение (для целей тестирования) для нового поля «DistanceFromOrigin».

Затем я понял, что не могу сказать платформе сущностей использовать мой sproc для его оператора select для сущности EventListings ... Фил предложил пространственные объекты, вот с чем я и столкнулся.

Вопрос

Как я могу использовать Spatials для поиска событий в радиусе почтовых индексов?

Ответы на вопрос(1)

Ваш ответ на вопрос