使用带有linq的getter,是否缓存了数据?

时间:2014-01-31 21:07:41

标签: c# linq linq-to-sql

我有一个控制台应用程序。假设我有一个使用Linq to Sql调用存储过程的getter。存储过程返回ISingleResult<T>并转换为List<T>

private List<GetInvoicesResult> _invoiceRequests {             
    get{
        var result = this._context.GetInvoices();                
        if (result != null)
        {
            return result.ToList();
        }
        return null;
    }              
}

如果我对getter引用进行了2次调用:

int ct =  _invoiceRequests.Count();

foreach(var invoice in _invoiceRequests){
   //do something
}

是执行两次的存储过程还是需要缓存数据?

1 个答案:

答案 0 :(得分:3)

它将执行SP两次。如果要缓存数据,则需要在属性获取器中明确地执行此操作。