2010-01-18 1 views
5

Ich habe eine ASP.NET-Seite entwickelt und verwende LINQ, um mit MS SQL Server zu kommunizieren. Ich bin in Basic SQL in Ordnung, aber ich bin viel besser beim Entwerfen von Abfragen mit LINQ. Ich weiß, dass sie ähnlich sind, aber ich finde es einfacher, komplexe Abfragen in LINQ zu entwerfen. Meine Frage ist dies: Gibt es eine Möglichkeit, eine Abfrage in LINQ zu entwerfen und dann die SQL zu erhalten, die es generiert? Ich möchte das SQL in eine gespeicherte Prozedur einbetten, da mehrere Seiten (außerhalb meiner Kontrolle) dieselbe Abfrage ausführen müssen.Gibt es eine Möglichkeit, SQL von einer LINQ-Abfrage erstellt zu erhalten?

+0

LINQ to SQL? LINQ zu Entitäten? LINQ zu etwas anderem? (Alle diese wurden übrigens bereits wiederholt auf dieser Site beantwortet; Sie könnten eine Suche versuchen.) –

Antwort

6

Ja. Der LINQ-Datenbankkontext verfügt über eine Log-Eigenschaft, die das von ihm ausgeführte SQL ausgibt. Sie können dies auch über ein kostenloses Produkt namens LinqPad und ein kommerzielles Produkt namens Linqer tun.

+1

Sie können auch DataContext.GetCommand (query) verwenden. – itowlson

3

Sie können es 2 Möglichkeiten erhalten:

  1. Verwenden LINQPad
  2. Verwendung ToString() auf der Abfrage seiner SQL Form zu erhalten:

    var query = von x in Sometable wobei x .SomeField == 5 Wählen Sie x.SomeOtherField; Console.WriteLine (Abfrage.ToString());

1

Wenn Linq-Anweisungen schreiben, die gegen SQL Server ausgeführt werden, immer Augapfel sie in SQL Server Profiler. Die Interpretation, die innerhalb von SQL ausgeführt wird, wird Sie oft überraschen.

In Leistungstools/SQL Server Profiler starten Sie eine neue Ablaufverfolgung.

Führen Sie Ihre Abfrage in Ihrer App, greifen die Ausgabe von Profiler Einfügen in SQL Server Query Analyzer

Verwandte Themen