У меня есть существующий сайт, разработанный с использованием ASP.NET MVC 3 и Entity Framework 4, запрашивающих базу данных Sql Server 2008. Он содержит форму поиска с примерно 10 полями, и когда пользователь нажимает кнопку отправки, я динамически создаю запрос Entity SQL, содержащий только указанные поля поиска, опуская пустые. Оно работает. Пока все хорошо.
Теперь клиент хочет, чтобы поведение полного текста находилось в одном из полей. Я считаю этот запрос довольно сложным, потому что (AFAIK):
- Entity Framework не поддерживает полный текстовый поиск
- Я хочу, чтобы избежать хранимых процедур, чтобы обернуть синтаксис FTS, потому что до сих пор я использовал только "статические" SP, сохраняя логику в коде .NET. Поэтому я хочу попытаться избежать создания запроса внутри процедуры. И создание одной процедуры для каждой комбинации полей поиска не является вариантом.
Решения, о которых я мог подумать:
- Помещение хранимой процедуры или пользовательской функции в качестве предиката для seach в предложении WHERE (я не уверен, что это возможно)
- Получение результатов FTS только во временной таблице и выполнение других фильтров на этой временной таблице. Я боюсь плохих выступлений, если есть много результатов FTS с этой техникой...
Какой лучший способ для этого сделать?