Question

Est-il possible de convertir en quelque sorte une programmation requête SQL à un arbre d'expression LINQ? La requête SQL est censé être généré par cette requête LINQ, donc je pense comme un pauvre sérialisation de l'homme s \ désérialisation de requêtes LINQ au format t-sql.

Merci.

Était-ce utile?

La solution

Tout est possible, il faut juste un camion plein de travail. Le problème est que vous devez d'abord analyser la requête SQL, et interpréter l'AST pour le convertir en un arbre d'expression LINQ. Ce n'est pas trivial, comme Linq est pas 1: 1 compatible avec sql: par exemple, dans LINQ, des agrégats sur un groupby sont externes au groupby, alors que dans SQL ils sont internes: ils doivent être dans la même portée comme groupby sinon ils ne fonctionneront pas. Ce genre d'information est nécessaire pour convertir les requêtes LINQ en requêtes SQL, mais aussi l'inverse.

Donc, pour les requêtes magasin, je choisi un itinéraire différent, par exemple un motif de spécification

Autres conseils

Je ne crois pas qu'il y ait quoi que ce soit intégré dans LINQ to SQL.

En théorie, j'ose dire que ce serait possible (même si elle ne garantirait pas roundtrip, car il existe différentes façons d'exprimer la même requête) -. Mais très difficile à faire bien

Chose ce qui peut éventuellement vous aider - LINQPad. Je suppose, il ne peut pas traduire SQL requête LINQ, mais il peut traduire LINQ to SQL.

L'une des options serait de suivre de SQL généré le code IL. Par exemple:

SELECT TOP (50) [t0].[Id], [t0].[tralala]
FROM [pamparam] AS [t0]

Génère:

IL_0001:  ldarg.0     
IL_0002:  call        LINQPad.User.TypedDataContext.get_pamparam
IL_0007:  ldc.i4.s    32 
IL_0009:  call        System.Linq.Queryable.Take
IL_000E:  call        LINQPad.Extensions.Dump

De cette façon, il est tout à fait évident, cette requête LINQ ressemblerait à ceci:

pamparam.Take (50)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top