Как вы выполняете полнотекстовый поиск (FTS) с сущностью Linq to ADO.NET?

c# entity-framework full-text-search linq-to-entities sql-server-2008

Вопрос

Теперь, когда в SQL Server 2008 встроен полнотекстовый поиск. Я собираюсь использовать его для поиска в моем веб-сайте. Я также смотрю на использование структуры сущностей ADO.NET для моей ORM, но мне было интересно, как вы делаете полнотекстовый поиск (FTS) с инфраструктурой сущностей Linq to ADO.NET?

Есть ли какая-либо поддержка в структуре сущностей ADO.NET, или я застрял, используя метод создания функции, которая использует предикаты полнотекстового поиска ?

Принятый ответ

Entity Framework поддерживает только подмножество доступных функций sql (частично, чтобы оставаться совместимым с целым рядом провайдеров). Однако даже LINQ-to-SQL (который поддерживает намного больше специфических конструкций SQL-Server, таких как UDF) не поддерживает полнотекстовый AFAIK.

Я считаю, что вам нужно использовать хранимую процедуру / UDF. Подход UDF предпочтителен, так как уровень метаданных намного сильнее, и он компонуется на сервере БД - однако Entity Framework не (или не сделал, в прошлый раз, когда я проверял) как UDF; использовать хранимую процедуру.


Популярные ответы

Я видел такой код для EF4:

var query = context.ExecuteStoreQuery<Person>(
        "SELECT * FROM People WHERE FREETEXT(*,{0})", 
        searchText
    ).AsQueryable();

В некоторых случаях это может быть проще, чем создание хранимых процедур или UDP.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow