Supporto LINQ in NCache

Le applicazioni del mondo reale potrebbero spesso dover filtrare i dati anziché semplicemente eseguire una query per la chiave primaria. L'uso di LINQ semplifica il recupero dei dati dal database in base alla logica personalizzata utilizzata in fase di runtime. Perciò, NCache supporta l'esecuzione di query LINQ, che consente di eseguire query sulla cache distribuita nello stesso modo in cui si esegue una query sul database.

LINQ è un linguaggio di query .NET generico che consente di cercare e filtrare i dati dalla propria sorgente dati. La sintassi di LINQ è molto simile a quella di SQL, ma fornisce metodi di query migliori e più ottimizzati quando si interrogano i dati. NCache server. Offre la possibilità di consentire espressioni di query più efficienti provvedendo al contempo al controllo della sintassi durante la compilazione del codice.

NCache Integra perfettamente LINQ per interrogare le informazioni all'interno della cache tramite un provider LINQ. Il provider di collegamento facilita l'esecuzione di query LINQ sulla cache distribuita, migliorando al contempo le prestazioni dell'applicazione senza modificare il modello a oggetti LINQ.

A differenza dello standard LINQ-to-Objects che viene eseguito localmente, NCache LINQ esegue query in parallelo sull'intero cluster di server. Questa esecuzione distribuita garantisce che il filtraggio avvenga a livello di origine dati, riducendo significativamente l'occupazione di memoria dell'applicazione client.

 

Quali espressioni di query LINQ fanno NCache supporto?

NCache supporta le espressioni di query di base del linguaggio LINQ per la ricerca dei dati nella cache. Sono:

  • Espressioni Lambda: Le espressioni lambda in un'equazione LINQ traducono la logica in fase di esecuzione, in modo da poterla trasmettere comodamente alla fonte dati.
  • IQueryable<Product> products = new NCacheQuery<Product>(cache);
    IQueryable<Product> product = products.Select(p => p).Where(p => p. UnitsInStock > 10);
  • Espressioni di query: Le espressioni di query interrogano e trasformano i dati dai server cache distribuita abilitati per LINQ.
  • IQueryable<Product> products = new NCacheQuery<Product>(cache);
    IQueryable<Product> product = from prod in products
    	where prod.UnitsInStock > 10
    	select prod;
Caratteristica Espressioni Lambda (Fluente) Espressioni di query (dichiarative)
Stile di sintassi Basato su metodi (metodi concatenati) Parole chiave simili a SQL (da, where, select)
compilazione Compilato direttamente in Expression Trees (per Interrogabile) Abbassato nelle chiamate al metodo Lambda dal compilatore, quindi trasformato in alberi di espressione
NCache Analizzato in NCache SQL tramite NCachedomanda Analizzato in NCache SQL tramite NCachedomanda
Miglior caso d'uso Migliore per la creazione/pipelining di query dinamiche Ideale per join complessi o query "piatte" leggibili
 

Operatori LINQ

Gli operatori LINQ sono metodi di estensione che offrono funzionalità di query come proiezione, aggregazione, filtraggio e ordinamento. Tra questi operatori, NCache supporta quelli di seguito indicati:

  • Operatore di proiezione: proietta valori in base a una funzione di trasformazione. Il frammento di codice seguente mostra come utilizzare l'operatore di proiezione select per cercare i dati della cache.
  • IQueryable<Product> product = products.Select(prod => prod);
  • Operatore di restrizione: limita il set di risultati ai dati selezionati che soddisfano una condizione particolare. Questo frammento di codice ricerca nella cache tutti i prodotti le cui unità nell'ordine sono maggiori di 10.
  • IQueryable<Product> product = products.Select(prod => prod).Where(prod => prod.UnitsInStock > 10);
 

Operatori di query

NCache supporta gli operatori di query di base con query LINQ come:

  • Uguale a (==)
  • Non è uguale (!=)
  • Meno di (<)
  • Maggiore di (>)
  • Minore di uguale a (<=)
  • Maggiore di uguale a (>=)

Fare riferimento a Operatori di query LINQ per l'utilizzo di questi operatori.

 

Operatori logici

NCache supporta due operatori logici con LINQ: gli operatori AND (&&) e OR (||). Questi operatori combinano due o più criteri di restrizione per la ricerca nella cache. Segui la nostra guida su LINQ Operatori logici per capire nel dettaglio il loro utilizzo.

 

Operatori di aggregazione

NCache supporta i seguenti operatori di aggregazione:

  • Contare
  • Max
  • Min
  • Media
  • Somma

Di seguito è riportato un esempio di come utilizzare le funzioni aggregate per cercare i dati della cache e contare i risultati:

int count = products.Select(p => p).Where(prod => prod.UnitsInStock <= 50).Count();

Comprendere l'utilizzo degli operatori aggregati in NCache dalla nostra guida in poi Operatori aggregati LINQ.

 

Operatori con caratteri jolly

NCache supporta più caratteri jolly nelle espressioni LINQ. Questi operatori jolly sono:

  • Inizia con
  • Finisce con
  • contiene
  • Equivale

Di seguito è riportato un esempio di utilizzo dei caratteri jolly con una restrizione in cui l'operatore cerca un set di dati specifico nella cache:

IQueryable<Product> product = products.Select(p => p).Where(p => p.ProductName.StartsWith("Be"));

Fare riferimento alla nostra documentazione su Operatori con caratteri jolly LINQ per saperne di più.

 

Come posso usare LINQPad con NCache?

LINQPad è uno strumento di terze parti utilizzato per interrogare in modo interattivo i database SQL utilizzando espressioni query e lambda e scrivere codici C# senza alcun IDE. NCache supporta l'integrazione perfetta con l'utilità LINQPad per migliorare l'analisi dei dati e le prestazioni delle applicazioni. Per elaborare le query in LINQPad, NCache Il provider LINQ utilizza il NCacheClasse Context, che è un'implementazione dell'interfaccia IQueryable del framework .NET.

IQueryable<Product> product = new NCacheContext<Product>("ClusteredCache");
var result = from prod in product
	where prod.ProductID == 12
	select prod;

result.Dump();

L'esecuzione di questo script in LINQPad creerà un prodotto oggetto LINQ per eseguire query sui prodotti con UnitsInStock maggiore di 50.

LINQPad 5 in esecuzione NCacheQuery LINQ di contesto per recuperare ProductID 12 da una cache distribuita.
Interrogazione NCache ClusteredCache con LINQPad.

Per saperne di più su come utilizzare LINQPad per interrogare i dati nella cache, segui la nostra documentazione su Interroga i dati nella cache con LINQPade per configurare LINQPad in NCache per te stesso, segui i passaggi forniti in Configura LINQPad per NCache.

Cosa fare dopo?

Domande frequenti (FAQ)

NCache Il supporto LINQ consente di interrogare i dati della cache distribuita utilizzando la sintassi C# standard, eseguendo filtri in parallelo sul cluster di server per ridurre l'ingombro della memoria lato client e il carico del database.

Sì, NCache supporta le espressioni Lambda (sintassi fluente) attraverso NCachedomanda classe, consentendo la traduzione della logica in fase di esecuzione per una ricerca efficiente nella cache.

NCache fornisce un'integrazione perfetta con LINQPad tramite NCacheContesto classe, che consente agli sviluppatori di interrogare in modo interattivo le cache in cluster utilizzando istruzioni C# senza un IDE completo.

NCache supporta gli operatori di aggregazione LINQ standard inclusi Contare, Max, Min, Mediae Somma per eseguire calcoli lato server su set di dati memorizzati nella cache.

NCache supporta più operatori jolly nelle espressioni LINQ, in particolare Inizia con, Finisce con, contienee Equivale per un filtraggio flessibile basato su stringhe.

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.