.Включить только загрузку первого экземпляра включенного объекта - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь загрузить награду информацией. Я использую следующий код:

var rewards = await ctx.RewardGroupRewards.Where(r => r.CampaignRewardGroup.Id == rewardGroupId)
                .Include(r => r.CampaignRewardGroup)
                .Include(r => r.CampaignRewardCategory)
                .Include(r => r.CostDenomination)
                .Include(r => r.Reward)
                .ToListAsync();

Когда я проверяю результат в отладчике, первый элемент в списке загружается правильно, но второй элемент в списке загружается с тем, что вы получите если вы создали новую группу, даже если ее идентификатор группы установлен правильно (или он вообще не будет отображаться в результатах).

1 Ответ

1 голос
/ 17 февраля 2020

На всякий случай, если это кому-нибудь пригодится, я нашел решение.

Я установил пакет EntityFrameworkCore.Proxies и включил отложенную загрузку, как описано здесь (https://dotnetcoretutorials.com/2019/09/07/lazy-loading-with-ef-core/ ). Это дало некоторые ошибки для сопоставления свойств, которые не были виртуальными (хотя не те, которые использовались в указанном выше запросе c). После того, как я это исправил, все заработало.

Странно то, что теперь он работает и с отложенной загрузкой, поэтому может быть достаточно просто добавить ссылку Proxies в проект или убедиться, что вся ваша навигация свойства виртуализированы, но я все равно оставлю LL включенным, так как это имеет смысл для моего проекта.

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