【问题标题】:How Do LINQ TO SQL Stored Procedure Calls Work?LINQ TO SQL 存储过程调用如何工作?
【发布时间】:2010-03-03 15:01:25
【问题描述】:

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

基本上,我正在使用一个存储过程,它有时可能会返回数千条记录,而大多数情况下它只返回几千条记录。

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

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

是一次将所有内容加载到内存中,还是在我循环时一次加载一个?

【问题讨论】:

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


    【解决方案1】:

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

    如果您将存储过程的结果绑定到支持延迟加载其子元素的数据模型类,那么您将在该类的属性上获得延迟加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      相关资源
      最近更新 更多