2010-01-18 3 views
5

Я занимаюсь разработкой страницы ASP.NET и использую LINQ для работы с сервером MS SQL. Я в порядке с базовым SQL, но мне намного лучше разрабатывать запросы с помощью LINQ. Я знаю, что они похожи, но мне легче разрабатывать сложные запросы в LINQ. Мой вопрос заключается в следующем: есть ли способ спроектировать запрос в LINQ, а затем получить SQL, который он сгенерировал? Я хотел бы встроить SQL в хранимую процедуру, поскольку несколько страниц (вне моего контроля) должны будут делать один и тот же запрос.Есть ли способ получить SQL, созданный с помощью запроса LINQ?

+0

LINQ к SQL? LINQ для объектов? LINQ к чему-то еще? (Все они, кстати, уже неоднократно отвечали на этом сайте, вы можете попробовать выполнить поиск.) –

ответ

6

Да. Контекст базы данных LINQ имеет свойство Log, которое выводит SQL-код, который он выполнил. Вы также можете сделать это через бесплатный продукт LinqPad и коммерческий продукт Linqer.

+1

Вы также можете использовать DataContext.GetCommand (query). – itowlson

3

Вы можете получить его 2 способами:

  1. Использование LINQPad
  2. использование ToString() на запрос, чтобы получить его SQL форму:

    уаг запрос = от х в SomeTable где х .SomeField == 5 выберите x.SomeOtherField; Console.WriteLine (query.ToString());

1

Если вы хотите получить более подробную информацию в углубленном, то вы можете использовать Linq to Sql Profiler, который будет отображать все запросы, а также alerts

1

При написании заявления Linq, которые выполняются на SQL Server, всегда глазок их в Профилировщик SQL Server. Интерпретация, выполняемая внутри SQL, часто вас удивляет.

В инструментах производительности/Профилировщик SQL Server запускает новую трассировку.

Выполните запрос в вашем приложении, захватить выход из Profiler Вставить в анализатор запросов SQL Server

Смежные вопросы