J'ai essayé d'utiliser LINQ dynamique à Entity dans mon application pour spécifier l'attribut OrderBy à l'exécution. Cependant lorsque vous utilisez le code comme décrit dans la majorité des documents:OrderBy ("it." + Tri) - Codage dur dans le framework LINQ to Entity?
var query = context.Customer.OrderBy("Name");
J'ai reçu l'exception suivante:
System.Data.EntitySqlException: « Nom » ne pouvait pas être résolue dans le cadre ou le contexte actuel . Assurez-vous que toutes les variables référencées sont dans la portée, que les schémas requis sont chargés et que les espaces de noms sont correctement référencés.
Après de longues recherches, j'ai trouvé cette page MSDN:
http://msdn.microsoft.com/en-us/library/bb358828.aspx
MARQUÉE l'exemple de code suivant:
ObjectQuery<Product> productQuery2 = productQuery1.OrderBy("it.ProductID");
Cela m'a incité à changer mon code à ce qui suit:
var query = context.Customer.OrderBy("it.Name");
Après cela, le code fonctionne parfaitement. Quelqu'un pourrait-il confirmer que c'est effectivement la bonne façon de faire fonctionner OrderBy avec LINQ to Entity? Je ne peux pas croire que le cadre aurait été mis en œuvre de cette façon, peut-être que j'ai oublié quelque chose?
Merci, Matt
Merci, je vais essayer la lib dynamique et voir si cela fonctionne. Seriez-vous capable de donner un exemple quand il serait préférable d'utiliser la syntaxe 'it'? Il semble coupler étroitement votre code avec une implémentation sur laquelle vous n'avez aucun contrôle. C'est à dire. cela pourrait changer et donc casser votre code? Merci, Matt – Matt
À mon humble avis, la seule bonne raison d'utiliser ESQL sur System.Linq.Dynamic est si vous avez besoin d'utiliser l'une des rares fonctionnalités d'ESQL qui ne sont pas disponibles dans S.L.D., comme les classements. Surtout je préfère S.L.D. –