Учитывая следующий запрос 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]
Обратите внимание на отсутствие предложения where в исполняемом операторе SQL.
Означает ли это, что вся таблица "Импорт" кэшируется в память? Будет ли эта медленная производительность вообще, если в таблице содержится большое количество записей?
Помогите мне понять, что на самом деле происходит за кулисами здесь.