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?
Odpowiedz
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.
Możesz również użyć DataContext.GetCommand (zapytanie). – itowlson
można je dostać 2 sposoby:
- Zastosowanie LINQPad
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());
Jeśli chcesz uzyskać więcej szczegółowych informacji można użyć Linq to Sql Profiler który wyświetli wszystkie zapytania jak alerts
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
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.) –