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

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

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

Ответ 1

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

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

Ответ 2

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

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

Это может быть проще, чем создание хранимого proc или UDP в некоторых случаях.