Стремительная загрузка всегда явная - без автоматизации. Вы должны определить, включает в себя все отношения, которые вы хотите загрузить. Если вы этого не сделаете, вы почти всегда закончите с решением, используя новый запрос для каждого отношения.
Ваш метод расширения должен использовать:
((EntityCollection<...>)entity.NavigationCollection).Load();
Если вам нужно загрузить подчиненные отношения, вы также можете позвонить:
((EntityCollection<...>)entity.NavigationCollection).CreateSourceQuery()
.Include(...)
.Execute();
Но каждый вызов Load
или Execute
все равно будет создавать новый запрос к базе данных, и вы должны написать код, который будет выполнять эти вызовы. Кроме того, у вас должны быть прокси-объекты, чтобы иметь возможность преобразовывать общие ICollection<...>
в EntityCollection<...>
, и вы должны загружать все простые навигационные свойства (не коллекции) с общей энергичной загрузкой.