Я разрабатывал страницу ASP.NET и использовал LINQ для обработки говорящий с SQL-сервером MS. Я в порядке в основном SQL, однако я намного лучше с разработкой запросов с помощью LINQ. Я знаю, что они подобны, но я нахожу это easer для разработки сложных запросов в LINQ. Мой вопрос - это: существует ли способ разработать запрос в LINQ и затем получить SQL, который он генерировал? Я хотел бы встроить SQL в хранимую процедуру, так как несколько страниц (вне моего управления) должны будут сделать тот же запрос.
Да. Контекст базы данных LINQ имеет свойство Log, которое выводит SQL, который он выполнял. Вы также можете сделать это с помощью бесплатного продукта под названием LinqPad и коммерческого продукта под названием Linqer.
Вы можете получить его 2 способами:
использовать ToString() для запроса, чтобы получить его SQL форму:
var запрос = от x в SomeTable где x.SomeField == 5 выберите x.SomeOtherField; Console.WriteLine(запрос. ToString());
Если вы хотите получить более углубленную информацию, вы можете использовать LINQ в SQL Profiler , которые будут отображать все запросы, а также Alerts
, когда Написание операторов LINQ, которые выполняются против SQL Server, всегда Healball их в SQL Server Profiler. Интерпретация, которая выполняется внутри SQL, часто удивляет вас.
В инструментах производительности / SQL Server Profiler начните новый след.
Выполните ваш запрос в вашем приложении, Возьмите вывод из профилирования Вставить в анализатор запроса SQL Server