2010-01-18 12 views
5

Zajmuję się tworzeniem strony ASP.NET i używam LINQ do obsługi rozmów z serwerem MS SQL. W języku SQL wszystko jest w porządku, ale o wiele lepiej jest projektować zapytania za pomocą LINQ. Wiem, że są podobne, ale uważam, że łatwiej jest projektować złożone zapytania w LINQ. Moje pytanie brzmi: czy istnieje sposób zaprojektowania kwerendy w LINQ, a następnie uzyskać SQL, który wygenerował? Chciałbym osadzić SQL w procedurze przechowywanej, ponieważ wiele stron (poza moją kontrolą) będzie musiało wykonać to samo zapytanie.Czy istnieje sposób na uzyskanie SQL utworzony przez kwerendę LINQ?

+0

LINQ do SQL? LINQ do jednostek? LINQ do czegoś innego? (Przy okazji, wszystkie z nich zostały już wielokrotnie odpowiedział na tej stronie, możesz spróbować wyszukiwania.) –

Odpowiedz

6

Tak. Kontekst bazy danych LINQ ma właściwość Log, która wyprowadza SQL, który wykonał. Możesz to również zrobić za pomocą bezpłatnego produktu o nazwie LinqPad i komercyjnego produktu o nazwie Linqer.

+1

Możesz również użyć DataContext.GetCommand (zapytanie). – itowlson

3

można je dostać 2 sposoby:

  1. Zastosowanie LINQPad
  2. Zastosowanie toString() na zapytania, aby uzyskać formę SQL:

    var query = od X w SomeTable gdzie x .SomeField == 5 wybierz x.SomeOtherField; Console.WriteLine (query.ToString());

1

Podczas pisania sprawozdań LINQ, które są wykonywane na SQL Server, Zawsze gałki ocznej je Program SQL Server Profiler. Interpretacja wykonywana wewnątrz SQL często Cię zaskakuje.

W narzędziach wydajności/SQL Server Profiler uruchom nowy ślad.

Wykonaj zapytanie w swojej aplikacji, grab wyjście z Profiler Wklej do analizatora kwerend SQL Server

Powiązane problemy