Есть ли способ смотреть запросы 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.