我有一个我创建的LINQ TO SQL上下文调用存储过程。当我循环遍历ISingleResult时,它是在动态创建实体的同时,底层DataReader读取结果,或者在函数调用返回之前将所有内容放入实体中。
基本上正在发生的事情是我正在使用存储过程,有时可能会返回数千条记录,而大部分时间它只返回几千条记录。
DatabaseDataContext context = new DatabaseDataContext();
var resultSet = context.MyStoredProc();
foreach (var result in resultSet)
{
// some code here
}
是否会将所有内容一次加载到内存中,或者在我遍历它时一次加载一个???
答案 0 :(得分:4)
枚举结果时将调用存储过程,因此延迟执行。但是,它没有延迟加载。这意味着,一旦枚举了存储过程的结果,您将完全有效地执行存储过程,并且所有结果都将被恢复。
如果要将存储过程的结果绑定到数据模型类,该类支持对其子元素进行延迟加载,则会对该类的属性进行延迟加载。