Таким образом, у меня есть этот запрос в моем хранилище (также с использованием шаблона Unit of Work), который использует энергичную загрузку, чтобы совершить одно попадание в базу данных:
from g in _context.Games.Include(pg => pg.PreviousGame).Include(go => go.GameObjects)
where EntityFunctions.DiffMilliseconds(DateTime.Now, g.EndDate) > 0
&& g.GameTypeId == (int)GameTypes.Lottery
&& g.GameStatusId == (int)GameStatues.Open
select new LotteryModel
{
EndDate = g.EndDate,
GameId = g.Id,
PreviousGameEndDate = g.PreviousGame.EndDate,
PreviousGameId = g.PreviousGameId.HasValue ? g.PreviousGameId.Value : 0,
PreviousGameStartDate = g.PreviousGame.StartDate,
PreviousWinningObjectCount = g.PreviousGame.GameObjects.Select(go => go.Object.Count).FirstOrDefault(),
PreviousWinningObjectExternalVideoId = g.PreviousGame.GameObjects.Select(go => go.Object.Video.ExternalVideoId).FirstOrDefault(),
PreviousWinningObjectName = g.PreviousGame.GameObjects.Select(go => go.Object.Video.Name).FirstOrDefault(),
StartDate = g.StartDate,
WinningObjectCount = g.GameObjects.Select(go => go.Object.Count).FirstOrDefault(),
WinningObjectExternalVideoId = g.GameObjects.Select(go => go.Object.Video.ExternalVideoId).FirstOrDefault(),
WinningObjectName = g.GameObjects.Select(go => go.Object.Video.Name).FirstOrDefault()
};
Однако я не хочу использовать это, потому что яТеперь нужно создать отдельный объект LotteryModel, чтобы вернуться на все остальные слои.
Я хотел бы иметь возможность вернуть сущность типа "Game", которая имеет все навигационные методы, ко всем другим моим данным (PreviousGame, GameObjects и т. Д.), А затем сопоставить необходимые свойства с моей квартирой.посмотреть модель, но когда я делаю это, кажется, только ленивая загрузка объектов, а затем у меня есть дополнительные попадания в БД.
Или я ошибаюсь, и всякий раз, когда мне нужно вернуть иерархические данные, я должен возвращать их через мой запрос LINQ в выбранной части?
Моя основная цель - уменьшить попадания в БД,