数据何时加载到应用服务器的内存中?

时间:2016-08-19 04:59:02

标签: c# performance linq binary

我们有一个具有二进制列的数据库表。每行存储文件的文件内容。除非必要,否则我们希望避免将文件内容(每个大小为10-20Mb)加载到应用服务器的内存中。

在以下查询中,文件内容是否会加载到应用服务器的内存中?如果是,在哪个函数调用期间?

ajaxPromise

1 个答案:

答案 0 :(得分:0)

返回IEnumerable<TSource>IQueriable<TSource>的Linq方法被实现为延迟执行。 执行不同时,仅当您调用ToList() / ToArray()(或其中一个不返回Sum() / Max() / {{1}之类的集合的linq扩展方法时实际上将执行并将检索数据

在您的第一个查询中,在您尝试检索特定项目或致电FirstOrDefault()之前,OrderBy()尚未执行。但是,即使这是延迟执行的,当你请求第一个项目时,这一个将不得不使用整个集合(而ToList()例如将继续推迟整个集合 - see this for更多细节)

在第二个查询中,在该行之后,还没有任何内容可以执行。

你可以从昨天开始阅读关于linq和延迟执行的MSDN blogthis question,这也是关于linq和deferred的问题