Скажем, у меня есть база данных SQL 2005 с таблицей под названием Рестораны. Таблица Restaurants имеет следующие столбцы:
Я хочу позволить пользователям искать рестораны по имени и/или адрес. Как я пишу запрос LINQ для поддержки этого? Я должен смочь поддерживать возможность, что пользователь не входит в имя или адрес, просто имя, просто адрес или оба имени и адреса.
Моя начальная идея состояла в том, чтобы записать, что хранимая процедура для вычисления расстояния между двумя lat/long парами и функцией значения таблицы для вызова FREETEXTTABLE и использования некоторого условного Соединения обращается к моему запросу. Однако кажется, что Платформа Объекта 4 не поддерживает функции значения таблицы.
Вы, безусловно, можете написать процедуру, которая возвращает типы сущностей . Действительно, в EF 1 это был единственный вариант для procs. Процесс возвращает набор значений, а не таблицу, но я не вижу, что вам это действительно нужно.
Вы также можете выполнять произвольный T-SQL в EF 4, используя Context.ExecuteStoreQuery .
Вы не можете написать какой-либо LINQ
, который поддерживает геопространственные запросы на данный момент - будь то EF
или LinqToSql
. Это связано с тем, что не существует синтаксиса LINQ
, который может обрабатывать специальный пространственный синтаксис ST
, существующий в SQL Server 2008. (например, STIntersects (..)
)
Вам нужно будет написать хранимую процедуру , к которой вы затем сможете получить доступ через EF
.
Если вы хотите вернуть поле Sql GEOGRAPHY
в результате, вам нужно будет вернуть VARBINARY (MAX)
, я думаю, как эквивалентный тип поля для Код C #
.
Надеюсь, это поможет.