Question

Je souhaite ajouter une " recherche avancée " capacité à mon application ASP.NET/SQL Server 2005. Idéalement, j'aimerais que la table soit pilotée. Par exemple, si mon schéma change en ajoutant une nouvelle colonne à une table que je souhaite rechercher, j'aimerais que l'interface utilisateur reflète l'ajout de la nouvelle colonne en tant que champ de recherche. Je peux imaginer des tables de contrôle contenant les champs interrogeables, leurs types, les recherches associées, etc.

Ces tables peuvent être consultées lors de la construction de l'interface utilisateur. Ma question concerne la meilleure approche pour créer le SQL dynamique . Une approche serait de construire moi-même une instruction SQL paramétrée. Mais Linq m'intrigue et je pense en quelque sorte que l'espace de noms System.Linq.Dynamic - et les arbres d'expression Linq - pourraient fournir une solution plus élégante / robuste?

Espérons qu'une telle solution fonctionnerait avec Linq to Sql ou avec Linq to Entities. Ai-je raison d'enquêter sur ce chemin ou cet espace problème n'est-il pas vraiment l'un des cas d'utilisation d'arbres d'expression?

Était-ce utile?

La solution

Vous pouvez utiliser des arbres d’expression, en créant un arbre qui compare tous les champs du schéma, puis en transmettant cette expression à Linq2Sql pour obtenir le sql souhaité. Mais pourquoi s'embêter? C’est plus un effort de programmation, le code sera plus difficile à comprendre et il n’ya & # 8217; aucun avantage autre que la capacité théorique d’échanger des fournisseurs de données.

(Hey Howard) - en effet - travailler avec des chaînes dans ce cas sera beaucoup plus simple que w / expression tree. Par contre, si vous vouliez fournir un petit langage de requête à vos utilisateurs, les arbres d’expressions seraient alors utiles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top