Как работают вызовы хранимых процедур LINQ TO SQL? - PullRequest
0 голосов
/ 03 марта 2010

У меня есть созданный мной контекст LINQ TO SQL, который вызывает хранимый процесс. Когда я зацикливаюсь на ISingleResult, он создает сущности на лету, в то время как базовый DataReader считывает результаты или он помещает каждую вещь в Entities заранее, прежде чем вызов функции вернется.

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

DatabaseDataContext context = new DatabaseDataContext();
var resultSet = context.MyStoredProc();

foreach (var result in resultSet)
{
    // some code here
}

Будет ли это загружать каждую вещь в память за один раз или она будет загружаться по одному, пока я перебираю через нее ??

1 Ответ

4 голосов
/ 03 марта 2010

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

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

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