Как мне узнать, на что EF переводит запросы Linq? - PullRequest
2 голосов
/ 19 декабря 2011

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

Ответы [ 3 ]

5 голосов
/ 19 декабря 2011

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

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

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

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

У Джули Лерман есть хорошая статья с различными вариантами MSDN: Профилирование активности базы данных в Entity Framework . Она упоминает:

4 голосов
/ 19 декабря 2011

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

0 голосов
/ 19 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...