Есть ли способ смотреть запросы LINQ по мере их возникновения?

Недавно я изучал LINQ и хотел узнать больше об этом и искал простой способ визуализации моих запросов, чтобы получить более подробную информацию о том, что происходит во время запроса.

Кто-нибудь знает какие-либо инструменты, которые открыто доступны для выполнения чего-то вроде этого?

Спасибо,

Джош

Ответ 1

Возможно, вы захотите взять эту статью в Visual LINQ в блоге Jon Skeet. Visual LINQ - это инструмент, который позволит вам визуально просматривать ваш запрос LINQ в действии.

Вы можете напрямую скачать файлы для него здесь.

Надеюсь, что это поможет.

Изменить: В блоге Scott Gu также есть статья о LINQ to SQL Debug Visualizer, которая может помочь вам из.

Ответ 2

Это зависит от того, о каком LINQ вы говорите. Если вы имеете в виду LINQ-to-Objects, то WYSIWYG; за исключением некоторых методов, которые оптимизируются для определенных стандартных библиотек фреймов (например, метод расширения Count() на IEnumerable достаточно умен, чтобы вызвать свойство Count, если целевой перечислимый реализует ICollection), нет реальной оптимизации которые выполняются в каждом конкретном случае.

Для чего-то вроде LINQ-to-SQL вам придется использовать инструмент мониторинга, специфичный для базы данных, например, SQL Server Profiler для MS SQL Server.

Ответ 3

Вы также можете использовать SQL Profiler в SQL Management Studio (недоступно в экспресс-версии). Вы можете видеть, как SQL-сервер обрабатывает запросы Linq.

Ответ 4

Провайлер SQL Server, вероятно, лучший выбор. Вы можете смотреть, как выполняются запросы, и иметь журнал выполнения всего, что произошло. Он вполне настраивается, вы можете настроить его для захвата только тех событий, которые вас интересуют.

Попробуйте этот видеоурок: http://sqlserverpedia.com/wiki/Using_SQL_Server_Profiler

Ответ 5

Отличным инструментом для запросов Linq to SQL, которые я использовал много раз, является Linq to SQL Profiler. Он не только показывает ваши запросы, но также помогает понять, как их можно оптимизировать, чтобы избежать ошибок, таких как N + 1.