Просто краткое замечание по этому вопросу:
Но так как другие классы не имеют доступа
для сущностей в EF, мне нужно
выполнить операцию «ToList ()» на
запрос и тем самым полный выбор
набор данных в память.
Проблема, с которой вы здесь сталкиваетесь, на мой взгляд, вообще не связана с EF. Что бы вы сделали, если бы не использовали EF для доступа к данным, а просто ADO.NET? «Отсутствие доступа к EF» переводится как «Отсутствие доступа к подключению к базе данных» .
Если у вас есть службы или методы, которые должны работать с большим количеством объектов, но не можете получить доступ к базе данных - либо через EF, либо через соединение другого типа - вы должны загрузить данные в память, прежде чем передавать их этим службам / методам. Затем вы можете подумать о решениях для буферизации загруженных данных на жестком диске на стороне клиента, но это не имеет никакого отношения к источнику данных и способу их получения. Если вы не буферизуете и загружаете все в память, вы ограничены доступной памятью. Я думаю, что от этого ограничения невозможно избавиться.
Если у вас есть соединение с EF, я думаю, что решение, представленное в ответе Ладислава, является правильным, поскольку описанные им настройки и процедура приводят EF почти к поведению простого DataReader.