Сначала у меня есть проект, использующий код Entity Framework.
По разным причинам один из запросов linq просто не работает, и я хочу заменить его вызовом хранимой процедуры.
Следующий код прекрасно работает для вызова хранимой процедуры и преобразования результата в список.
IEnumerable<Activity> activities =
((IObjectContextAdapter)MyContext)
.ObjectContext.ExecuteStoreQuery<Activity>("GetActivities").ToList();
Однако я также хочу, чтобы некоторые включения в модели деятельности загружали одну из дочерних коллекций в этот объект. Например, у Activity есть коллекция Virtual List. Есть ли способ, которым я могу в своей хранимой процедуре также вернуть теги для каждого действия.
Если я сделаю следующее не работает
SELECT
Activities.ID,
Activities.Name,
Tags.ID,
Tags.Name
FROM
Activities
LEFT JOIN ActivityTags ON ActivityTags.ActivityID = Activities.ID
LEFT JOIN Tags ON Tags.ID = ActivityTags.TagID
Это ошибка в C #, говорящая, что это не допустимое действие. Если я удаляю бит тегов из хранимой процедуры, чтобы он просто выбирал из таблицы «Действия», он работает нормально.
Я не уверен, возможно ли то, что я спрашиваю, с помощью хранимой процедуры, использующей структуру сущностей, или нет. В противном случае мне, возможно, придется прибегнуть к использованию SqlCommand и построить модель из моего набора результатов самостоятельно.