LINQ TO SQL存储过程调用如何工作?

时间:2010-03-03 15:01:25

标签: c# .net linq-to-sql stored-procedures load

我有一个我创建的LINQ TO SQL上下文调用存储过程。当我循环遍历ISingleResult时,它是在动态创建实体的同时,底层DataReader读取结果,或者在函数调用返回之前将所有内容放入实体中。

基本上正在发生的事情是我正在使用存储过程,有时可能会返回数千条记录,而大部分时间它只返回几千条记录。

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

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

是否会将所有内容一次加载到内存中,或者在我遍历它时一次加载一个???

1 个答案:

答案 0 :(得分:4)

枚举结果时将调用存储过程,因此延迟执行。但是,它没有延迟加载。这意味着,一旦枚举了存储过程的结果,您将完全有效地执行存储过程,并且所有结果都将被恢复。

如果要将存储过程的结果绑定到数据模型类,该类支持对其子元素进行延迟加载,则会对该类的属性进行延迟加载。