Как включить связанные объекты в сгруппированные запросы Entity LINQ? - PullRequest
1 голос
/ 16 мая 2011

У меня есть несколько сущностей Setting, которые связаны с SettingDescription, который связан с SettingGroup.Историю настроек сохраняют, делая поле «Изменено» частью ключа.Чтобы получить настройки, соответствующие определенной категории, я использую этот запрос ( после справки отсюда ):

    var latestSettings =
        context.Settings.Include("Description.SettingGroup")
            .OrderByDescending(x => x.Modified)
            .GroupBy(x => 
                new { 
                    x.Category, 
                    x.Group, 
                    x.Name, 
                    x.Target }, x => x)
            .Where(x => x.Key.Category == category)
            .Select(result => result.FirstOrDefault())
            .ToArray();

Возвращает набор последних настроек, но часть «Включить»полностью игнорируетсяТем не менее, я могу принудительно загрузить описания, выполнив второй фиктивный запрос, который загружает описания в контекст.

    var latestSettings =
        context.Settings.Include("Description.SettingGroup")
            .OrderByDescending(x => x.Modified)
            .GroupBy(x => 
                new { 
                    x.Category, 
                    x.Group, 
                    x.Name, 
                    x.Target }, x => x)
            .Where(x => x.Key.Category == category)
            .Select(result => result.FirstOrDefault())
            .ToArray();
    var settingDescriptions = 
        context.SettingDescriptions.Include("SettingGroup")
               .Where(x => x.Category == category)
               .ToArray();

Почему включение игнорируется в запросе группы «обособленно»?* Могу ли я объединить загрузку настроек и описания в один запрос?

1 Ответ

0 голосов
/ 25 мая 2011

AlexJ из команды EF опубликовал отличную серию советов, в том числе:

"Подсказка 22 - Как сделать так, чтобы действительно включать Включить"
http://blogs.msdn.com/b/alexj/archive/2009/06/02/tip-22-how-to-make-include-really-include.aspx

Мне кажется, что ваш запрос возвращает сущности "Настройки" (без "изменения формы"), поэтому этот совет должен применяться.

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