Konvertieren Sie SQL Query programmgesteuert wieder in Linq Expression

expression-trees linq linq-to-sql

Frage

Ist es möglich, eine SQL-Abfrage programmatisch in eine linq-Ausdrucksstruktur zu konvertieren? Die sql-Abfrage soll von dieser linq-Abfrage erzeugt werden, daher denke ich an die Serialisierung \ deserialisierung von linq-Abfragen an das t-sql-Format eines armen Mannes.

Vielen Dank.

Akzeptierte Antwort

Alles ist möglich, es erfordert nur eine LKW-Ladung Arbeit. Das Problem besteht darin, dass Sie zuerst die SQL-Abfrage analysieren und den AST interpretieren müssen, um ihn in einen linq-Ausdrucksbaum umzuwandeln. Dies ist nicht trivial, da Linq nicht 1: 1 mit sql kompatibel ist: in linq sind Aggregate in einer groupby zum Beispiel extern zu groupby, während sie in SQL intern sind: sie müssen im selben Bereich liegen als die Gruppe, sonst werden sie nicht arbeiten. Diese Art von Informationen wird benötigt, um linq-Abfragen in SQL-Abfragen zu konvertieren, aber auch umgekehrt.

Um also Abfragen zu speichern, habe ich eine andere Route gewählt, zB ein Spezifikationsmuster


Beliebte Antwort

Ich glaube nicht, dass in LINQ-to-SQL etwas eingebaut ist.

Theoretisch würde ich sagen, dass es möglich wäre (obwohl es keinen Roundtripping garantieren würde, da es verschiedene Möglichkeiten gibt, dieselbe Anfrage auszudrücken) - aber sehr schwer, gut zu machen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow