Полный текст + пространственный поиск с Платформой Объекта 4

Скажем, у меня есть база данных SQL 2005 с таблицей под названием Рестораны. Таблица Restaurants имеет следующие столбцы:

  • RestaurantId
  • Имя:
  • Широта
  • Долгота

Я хочу позволить пользователям искать рестораны по имени и/или адрес. Как я пишу запрос LINQ для поддержки этого? Я должен смочь поддерживать возможность, что пользователь не входит в имя или адрес, просто имя, просто адрес или оба имени и адреса.

Моя начальная идея состояла в том, чтобы записать, что хранимая процедура для вычисления расстояния между двумя lat/long парами и функцией значения таблицы для вызова FREETEXTTABLE и использования некоторого условного Соединения обращается к моему запросу. Однако кажется, что Платформа Объекта 4 не поддерживает функции значения таблицы.

1
задан Kevin Pang 28 April 2010 в 15:35
поделиться

2 ответа

Вы, безусловно, можете написать процедуру, которая возвращает типы сущностей . Действительно, в EF 1 это был единственный вариант для procs. Процесс возвращает набор значений, а не таблицу, но я не вижу, что вам это действительно нужно.

Вы также можете выполнять произвольный T-SQL в EF 4, используя Context.ExecuteStoreQuery .

1
ответ дан 3 September 2019 в 00:57
поделиться

Вы не можете написать какой-либо LINQ , который поддерживает геопространственные запросы на данный момент - будь то EF или LinqToSql . Это связано с тем, что не существует синтаксиса LINQ , который может обрабатывать специальный пространственный синтаксис ST , существующий в SQL Server 2008. (например, STIntersects (..) )

Вам нужно будет написать хранимую процедуру , к которой вы затем сможете получить доступ через EF .

Если вы хотите вернуть поле Sql GEOGRAPHY в результате, вам нужно будет вернуть VARBINARY (MAX) , я думаю, как эквивалентный тип поля для Код C # .

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

1
ответ дан 3 September 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: