как увидеть сгенерированный sql из запроса linq

#sql #linq

#sql #linq

Вопрос:

Просто пытаюсь получить sql, сгенерированный запросом linq.

Комментарии:

1. Используете ли вы Linq2SQL или Entity Framework?

2. Я использую Entity Framework. Есть ли способ, с помощью которого я могу понять, какая команда SQL выполняется для конкретного запроса LINQ?

3. @DanielHilgarth, я Linq2SQL. Но решение как с EF, так и с Linq2SQL, я уверен, было бы замечательным.

Ответ №1:

С помощью Linq2SQL

 dc.GetCommand(query).CommandText
  

смотрите http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.getcommand.aspx для получения дополнительной информации.

Но я обычно использую LINQPad

Комментарии:

1. Спасибо, я верю, что это сработает. Извините за поздний ответ.

Ответ №2:

Для этого есть 3 способа.

1. Вы можете использовать LINQPad.Это бесплатно http://www.linqpad.net /

2. Вы можете использовать профилировщик SQL Server внутри Sql Server (Инструменты -> Профилировщик SQL Server)

3. Вы можете использовать Visual Studio Debugger для генерации T-Sql. (с любой версией Visual Studio)

Ответ №3:

Используйте SQL Profiler , если вы используете SQL Server в качестве базы данных.

Ответ №4:

Это появилось в Google, это руководство из 8 частей. Я думаю, это займет вас на несколько часов, мне это кажется довольно подробным.

1: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

2: http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx

3: http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx

4: http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

5: http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx

6: http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

7: http://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspx

8: http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx

Удачи.

Ответ №5:

Другой способ

Из статьи MSDN Как: Отобразить сгенерированный SQL (LINQ to SQL)

Установите для DataContext.Log свойства значение Console.Out , и вы увидите его в консоли

Ответ №6:

Самый простой способ, который я мог бы предложить, — это использовать Database Log . Установите Log после инициализации DataContext , и вы сможете отслеживать все, что делается EF в окне Visual studio output .

   DataContext db = new DataContext();
  db.Database.Log = generatedSQL =>
   {
      Debug.WriteLine(generatedSQL);
   };
  

Комментарии:

1. это было бы неплохо, но свойство Log недоступно в базе данных. (netcore 3.1)

Ответ №7:

Вы можете использовать средства диагностики в Visual Studio, чтобы просмотреть сгенерированный запрос.

Чтобы включить это, перейдите в правый верхний угол, там вы можете увидеть быстрый поиск и ввести инструменты диагностики.

В результатах нажмите на соответствующую опцию и смотрите ниже сгенерированный запрос.