Доступ Programatic к стеку вызовов в .NET

Объекты, выставленные как IQueryable<T> и IEnumerable<T>, фактически не выполняются до тех пор, пока они не будут повторены или иным образом недоступны, например, составлены в List<T>. Когда EF возвращает IQueryable<T>, он по существу просто создает что-то, способное извлекать данные, оно фактически не выполняет извлечение, пока вы его не уничтожаете.

Вы можете почувствовать это, поставив точку останова, где IQueryable определяется, когда вызывается .ToList(). (Изнутри контекста данных, как правильно указал Jofry.) Работа по извлечению данных выполняется во время вызова ToList().

Из-за этого вам нужно сохранить IQueryable<T> в рамках контекста данных.

12
задан Eric Haskins 17 August 2008 в 00:44
поделиться

3 ответа

22
ответ дан 2 December 2019 в 05:42
поделиться

Правильный путь состоит в том, чтобы использовать StackTrace и StackFrame классы. Выдача исключения только для получения отслеживания стека полностью неправильно использует исключения.

0
ответ дан 2 December 2019 в 05:42
поделиться

Можно использовать StackTrace и StrackFrame классы в System.Diagnostics.

5
ответ дан 2 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: