Domanda

Sto cercando di aggiungere una " ricerca avanzata " capacità per la mia applicazione ASP.NET/SQL Server 2005. Idealmente, mi piacerebbe che fosse guidato da un tavolo. Ad esempio, se il mio schema cambia con l'aggiunta di una nuova colonna a una tabella in cui voglio cercare, vorrei che l'interfaccia utente riflettesse l'aggiunta della nuova colonna come campo ricercabile. Posso immaginare alcune tabelle di controllo che contengono i campi ricercabili, i loro tipi, le ricerche associate, ecc.

Queste tabelle possono essere consultate durante la costruzione dell'interfaccia utente. La mia domanda risiede nel miglior approccio per creare l'SQL dinamico . Un approccio sarebbe quello di costruire me stesso un'istruzione SQL con parametri. Ma sono incuriosito da Linq e in qualche modo penso che lo spazio dei nomi System.Linq.Dynamic - e Alberi delle espressioni Linq - potrebbe fornire una soluzione più elegante / robusta?

Si spera che qualsiasi soluzione di questo tipo funzionerebbe con Linq to Sql o Linq to Entities. Ho ragione a indagare su questo percorso o questo spazio problematico non è davvero uno dei casi d'uso per gli alberi delle espressioni?

È stato utile?

Soluzione

Puoi usare gli alberi delle espressioni, costruendo un albero che faccia un confronto di tutti i campi nello schema e poi passando quell'espressione in Linq2Sql per tornare indietro al sql che desideri. Ma perché preoccuparsi? È più impegno di programmazione, il codice sarà più difficile da capire e non ci sono altri benefici oltre alla capacità teorica di scambiare fornitori di dati.

(Hey Howard) - in effetti - lavorare con le stringhe in questo caso sarà molto più semplice rispetto agli alberi delle espressioni. D'altra parte, se avessi fornito un linguaggio di query di piccole dimensioni ai tuoi utenti, gli alberi delle espressioni sarebbero utili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top