Является ли это рекомендуемым способом использования хранимой процедуры в Entity Framework 4? - PullRequest
1 голос
/ 15 ноября 2010

Мой код выполняет два обхода базы данных, потому что я не уверен, является ли это правильным способом создания коллекции моих POCO, где первое прохождение туда-обратно попадает в хранимую процедуру из-за какого-то определенного кода SQL.

Сценарий

Пользователь вводит в пользовательский интерфейс несколько автозаполнений поисковых запросов.Мой код обращается к хранимой процедуре (которая использует полный текстовый поиск * - поэтому я использую хранимую процедуру) и возвращает все distinct primary keys результатов.Они возвращаются к коду (мой IRepository class), и я ТОГДА использую EF для получения всех результатов для этих результатов хранимой процедуры.

Во-первых, я не знаю, как это сделать в Linq to Entities: для коллекции идентификаторов извлеките все сущности Foo.

Во-вторых, я делаю ДВА раунда в базу данных.Зачем?Потому что я не уверен, как я могу получить богатые результаты в первом круговом путешествии.Сущность состоит из нескольких POCO классов и имеет два свойства ICollection, и т. Д. ...

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

Я быстро создам фиктивную диаграмму классов, чтобы помочь с любыми ответами.

public class Person
{
    string Name;
    int Age;
    ICollection<string> NickNames;
    ICollection<Foo> DonnoSomethingElses;
}

Мысли?

1 Ответ

1 голос
/ 15 ноября 2010

Ну, две поездки туда и обратно звучат как проблема, которую можно избежать - не могли бы вы сделать что-то вроде:

WITH FullTextResults AS
(
   SELECT ID, ...... --- do your full text search here
)
SELECT
   (list of fields) 
FROM
   dbo.YourDataTable t
INNER JOIN
   FullTextResults ftr ON t.ID = ftr.ID  -- join on primary key
WHERE
   .....  -- possibly limit results

и просто вернуть вывод этого CTE (Common Table Expression) из вашего хранимого процесса ?? Это тогда вернет набор данных со строками и столбцами из вашей фактической таблицы данных, и EF сможет материализовать ваши Person классы из этого .....

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