2011-12-19 3 views
2

На многих сайтах/блогах я заметил, что люди, которые хотят объяснить механизм linq, записывают запросы Linq и предоставляют для этого перевод SQL. Как я могу получить перевод для своих собственных запросов? Я работаю с EF .Net 4.0 в VS2010. Есть ли место (свойство или даже какой-то сторонний инструмент), где я могу видеть, на что они переведены?Как узнать, что EF переводит запросы Linq?

+1

Не прямой ответ, но вы должны посмотреть на [EFProf] (http://efprof.com/). Да, это коммерческий инструмент, но человек это потрясающе. (Есть бесплатные способы сделать это, например, SQL Profiler) – vcsjones

+0

Это именно то, что я искал! Спасибо, он отлично работает, и я доволен 30-дневной пробной версией :) – user1086396

ответ

4

Самый простой способ - использовать SQL Profiler. Я нашел это настоящим богом-отправкой, когда дело доходит до отладки.

+0

Спасибо, это то, что я искал, но у меня только экспресс-выпуск MSSQL, поэтому мне пришлось бы играть с еще более сложными установщиками версии скрипты, чтобы получить профилировщик, поэтому я просто передаю сейчас, когда я спешу. – user1086396

5

Вы можете использовать ObjectQuery.ToTraceString метод:

var query = ... 
string sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString(); 

Однако некоторые недостатки этого подхода заключается в том, что он будет показывать только запросы, а не обновления/вставки/удаления. Кроме того, он не будет раскрывать используемые параметры.

Если вам нужно как можно больше деталей из запроса, используйте Profiler SQL Server как Neil suggested.

У Джулии Лерман есть хорошая статья с различными вариантами на MSDN: Profiling Database Activity in the Entity Framework. Она упоминает:

+0

Да, это действительно ограничено и не позволяет переводить много запросов, которые мне бы хотелось, спасибо, однако :) – user1086396

0

Вы можете использовать LinqPad, вы можете запросить модель лица и просмотреть сгенерированный SQL.