Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Query dinamiche con LINQ

Utilizzando LINQ possiamo creare facilmente comandi per interrogare basi di dati SQL direttamente da codice, con tutti i vantaggi derivanti dalla type-safety e dal controllo dei parametri a tempo compilazione. In alcuni casi, tuttavia, ad esempio quando si realizza un sito Internet e, in particolare, il suo motore di ricerca interno, può capitare di dover eseguire interrogazioni su un database utilizzando una serie più o meno lunga di parametri impostati dall'utente (ad esempio, ricerca di prodotti solo in una certa categoria, con vincoli sul prezzo e sulla disponibilità, ecc.).

Questa funzionalità può essere realizzata creando manualmente la query SQL, ovvero via codice, concatenando la condizione del WHERE. Al di là del fatto che questa tecnica andrebbe comunque evitata (per i noti problemi di sicurezza), anche con LINQ è possibile utilizzare query dinamiche, anche se il relativo supporto non è incluso "di base":  uno degli esempi di utilizzo di LINQ disponibili su MSDN fornisce la cosiddetta Dynamic Query Library, ovvero una serie di extension methods con cui è possibile utilizzare una stringa come argomento dell'operatore Where. Ad esempio:

var query = db.Customers. Where("City = @0 and Orders.Count >= @1", "London", 10). OrderBy("CompanyName"). Select("new(CompanyName as Name, Phone)");

Gli esempi in questione possono essere scaricati qui (per C#) oppure qui (per VB .NET). Per approfondire l'argomento, consiglio di leggere questo post dell'impareggiabile Scott Guthrie.

Technorati Tags: , , , , , ,

Print | posted on martedì 21 ottobre 2008 16:42 | Filed Under [ C# VB .NET ADO .NET & SQL ASP .NET SQL Server LINQ ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET