2010-03-03 3 views
0

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

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

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

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

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

ответ

4

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

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

Смежные вопросы