Frage

Ich suche eine „erweiterte Suche“ Fähigkeit zu meiner ASP.NET/SQL Server 2005 Anwendung hinzuzufügen. Im Idealfall würde Ich mag es, Tisch angetrieben sein. Zum Beispiel, wenn mein Schema ändert sich mit dem Hinzufügen einer neuen Spalte zu einer Tabelle, die ich gesucht werden soll, würde ich die Benutzeroberfläche haben möchte spiegeln die Hinzufügung der neuen Spalte als durchsuchbare Feld. Ich kann einige Steuertabellen vorstellen, die die Suchfelder enthalten, deren Typen, zugehörige Lookups, etc.

Diese Tabellen können zu Rate gezogen werden, wenn die Benutzeroberfläche zu bauen. Meine Frage liegt mit dem besten Ansatz, um die dynamische SQL zu erstellen. Ein Ansatz wäre eine parametrisierte SQL-Anweisung selbst zu konstruieren. Aber ich bin von Linq fasziniert, und irgendwie glaube ich, dass die System.Linq.Dynamic Namespace - und Linq Expression Trees - könnte eine elegantere / robuste Lösung bieten

Hoffentlich eine solche Lösung wäre entweder mit Linq zu Sql oder Linq to Entities arbeiten. Bin ich richtig, diesen Weg zu untersuchen, oder sind, ist dieses Problem Raum nicht wirklich eine der Anwendungsfälle für Ausdrucksbäume?

War es hilfreich?

Lösung

Sie könnten Ausdruck Bäume verwenden, um einen Baum aufzubauen, die einen Vergleich aller Felder im Schema tut und dann diesen Ausdruck in Linq2Sql geben wollen aus dem SQL Sie zurück zu bekommen. Aber warum die Mühe? Es ist mehr Programmieraufwand, wird der Code schwerer zu verstehen, und es gibt keinen Vorteil andere als eine theoretische Möglichkeit, Daten-Provider auszulagern.

(Hey Howard) - in der Tat - die Arbeit mit Strings in diesem Fall wird viel einfacher als w / Ausdruck Bäume. Auf der anderen Seite, wenn Sie eine kleine Abfragesprache für Ihre Benutzer zur Verfügung zu stellen würden, dann würden Ausdruck Bäume kommen in praktisch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top