假设有以下 LINQ to SQL 查询:
var test = from i in Imports
where i.IsActive
select i;
解释执行的SQL语句为:
SELECT [t0].[id] AS [Id] .... FROM [Imports] AS [t0] WHERE [t0].[isActive] = 1
假设我想在 select 语句中执行一些无法转换为 SQL 的操作。据我所知,实现这一点的传统方法是使用 AsEnumerable()
将其转换为可处理的对象。
考虑到这个更新后的代码:
var test = from i in Imports.AsEnumerable()
where i.IsActive
select new
{
// Make some method call
};
并更新了 SQL:
SELECT [t0].[id] AS [Id] ... FROM [Imports] AS [t0]
注意在执行的SQL语句中缺少where子句。
这是否意味着整个“Imports”表被缓存在内存中?如果表中包含大量记录,这会减慢性能吗?
帮我理解这里实际上正在发生什么。