Я пытаюсь найти магазины в радиусе X от пользователей по широте и долготе. Я прочитал довольно много вопросов, ответов и статей по этой теме. Мои результаты не обязательно должны быть точными, но ложные срабатывания, которые вы можете получить с фильтром в столбце «География», неприемлемы.
Учитывая приведенные выше требования, я не вижу необходимости использовать тип данных Geography и добавлять пространственный индекс. Мне также не нужен идеальный радиус круга. Другими словами, допустима ограничительная рамка. Поэтому я остановился на этом of-point-x" rel="nofollow">solution от Аластеры, которая провела очень информативную сессию по теме здесь
Теперь мое приложение MVC с использованием CF EF4 и SQL 2008R2. Первоначально я думал выполнить операцию в LINQ, как и в любом другом взаимодействии с БД, но, честно говоря, я был поставлен в тупик на нескольких шагах, таких как:
DECLARE @point geography = geography::Point(40.7316, -73.9920, 4326);
Я не думаю, что EF4 поддерживает тип данных geography, так что это, безусловно, усложнит ситуацию.
Затем я начал думать... учитывая, что база данных как бы предназначена для такого рода операций, должен ли я просто обернуть TSQL в SP, который выдает набор записей, на котором я могу использовать LINQ?
Это моя первая пространственная операция с базой данных, поэтому любые идеи или предложения приветствуются и будут оценены.
Если sp является жизнеспособным решением, предложения по наилучшему способу реализации были бы замечательными.