Код Entity Framework Сначала используется хранимая процедура для псевдоиндекса? - PullRequest
0 голосов
/ 12 октября 2011

Пока мы полностью не выясним нашу стратегию полнотекстового поиска, мы придумали разумное решение, чтобы показать нашим владельцам бизнеса, как функционал будет работать. С учетом вышесказанного мы используем Entity Framework 4.1 и первый подход к коду. Мы создали хранимую процедуру для получения результатов в стандартном формате. Вот пример класса результатов поиска:

public class SearchResult
{
     public Guid EntityId {get;set;}
     public string DisplayText {get;set;}
     public string Icon {get;set;}

}

Теперь никакие данные не попадут в таблицу для SearchResults. Идея в том, что мы будем искать несколько объектов и строить результаты, используя эту структуру. SP выглядит примерно так:

CREATE PROCEDURE dbo.Search(
@term varchar(200),
@topSelect int = 5,
@isPrefix BIT = 0,

)
AS
BEGIN
  Declare @SearchTerm varchar(250)
    If (isNull(@isPrefix,0) = 0)
        begin  
            Set @SearchTerm = '%' + @term + '%'
        end
    Else
        begin
            Set @SearchTerm = @term + '%'
        end

select top (@topSelect) 'Project' as 'Controller',
       [Id],
       Name as 'DisplayText',
       'PROJECTICON'       as Icon
from Projects
where Name like @SearchTerm
UNION
select top (@topSelect) 'Rfi' as 'Controller',
       [Id],
       [Number] + ' - ' + [Number] as 'DisplayText',
       'RFIICON'       as Icon
from Rfis
where (Subject like @SearchTerm or
      Description like @SearchTerm or
      Number like @SearchTerm)
End

Могу ли я вызвать хранимую процедуру с EF и заполнить "сущность" SearchResult результатами SP или мне нужно сделать это без EF?

Идея та же, что и при использовании индекса, но мы ищем данные в реальном времени. Опять же, это временное решение для наших нужд, пока мы не уточним, какое решение FTS мы хотим использовать.

Обновление:

После некоторого исследования я думаю, что это может быть поведение ... Я сообщу.

1 Ответ

0 голосов
/ 12 октября 2011

Пока у вас те же имена столбцов, что и в сущности, все отображается просто супер! Проверьте это для получения дополнительной информации об использовании SP с EF.Следует помнить одну вещь: если вы столкнетесь с этой ошибкой: «SqlParameter уже содержится в другой SqlParameterCollection», убедитесь, что в коллекции используется что-то вроде ToList (), иначе запрос будет выполнен снова, если вы попытаетесь использоватьЭто.По крайней мере, это то, что я нашел в своем заявлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...