LinqPad - SQL in Linq-Befehl konvertieren

9

Ich habe kürzlich LinqPad gekauft, in der Hoffnung, dass ich damit einige SQL-Anweisungen in LINQ-Anweisungen konvertieren kann.

Mit LinqPad kann ich DB anhängen und die SQL-Anweisung ausführen, die die Ergebnisse zurückgibt, die ich brauche.

Aber ich kann keinen 'Befehl' finden, um diese SQL-Anweisung in LINQ umzuwandeln.

Können Sie mir bitte mitteilen, wie Sie mit LinqPad SQL nach LINQ konvertieren? ODER ein anderes Werkzeug.

    
Ravi Ram 02.09.2012, 18:00
quelle

3 Antworten

5

Im Allgemeinen gibt es keine Werkzeuge, um SQL zu Linq wie @ andres-abel zu erwähnen, aber manchmal müssen Sie Linq schreiben, das genau wie spezifiziertes SQL ausführt (zum Beispiel wegen der Leistungsprobleme, der Rückwärtskompatibilität oder einiger anderer Gründe ).

In diesem Fall empfehle ich Ihnen, das Reverse Engineering selbst durchzuführen :

  1. Konfigurieren Sie die Protokollierung von Dump-SQL-Anweisungen, die von Linq an stdout using generiert wurden
  2. Schreiben Sie die Linq-Anweisung manuell neu, bis Sie das bekommen, was Sie brauchen
Akim 02.09.2012, 18:24
quelle
38

Es gibt ein Tool, das Linqer genannt wird, aber seien Sie vorsichtig: Wenn Sie von SQL nach LINQ transkribieren, erhalten Sie das das Schlimmste aus beiden Welten .

Angenommen, Sie möchten, dass alle Käufe in Höhe von mindestens 1000 US-Dollar in bar oder von Kunden in Washington bezahlt werden. Hier ist die Abfrage in SQL:

%Vor%

Wie würde das auf LINQ übertragen? Der falsche Weg besteht darin, die Abfrage in LINQ zu transkribieren und zu versuchen, die äußere und die innere Verknüpfung, Unterabfrage und Gruppenklausel zu reproduzieren. Der richtige Weg besteht darin, Ihre ursprüngliche Abfrage (in Englisch) direkt in LINQ zu mappen, wobei Sie den linearen Datenfluss und die Assoziationseigenschaften von LINQ nutzen:

Ich möchte alle Einkäufe ...

%Vor%

... von $ 1000 oder höher ...

%Vor%

... bar bezahlt ...

%Vor%

... oder von Kunden, die in Washington leben

%Vor%

Hier ist die letzte Abfrage:

%Vor%

Weitere Informationen hier .

    
Joe Albahari 03.09.2012 00:41
quelle
3

LinqPad enthält keinen SQL- & gt; LINQ-Übersetzer. LinqPad enthält tatsächlich auch keinen LINQ- & gt; SQL-Übersetzer. Es basiert auf der .Net Linq-zu-Sql-Bibliothek oder dem Entity-Framework für die Übersetzung.

Ich kenne auch kein anderes Werkzeug mit dieser Fähigkeit. In einfachen Fällen wäre es möglich, einen zu erstellen, aber für komplexere Szenarien wäre es unmöglich, da es keinen LINQ-Ausdruck gibt, der mit einigen SQL-Konstrukten übereinstimmt.

    
Anders Abel 02.09.2012 18:05
quelle

Tags und Links