Applicazioni a più livelli e remote con LINQ to SQL
È possibile creare applicazioni a più livelli che utilizzano LINQ to SQL. In genere, il contesto dati LINQ to SQL, le classi di entità e la logica di costruzione delle query risiedono nel livello intermedio come livello di accesso ai dati (DAL). La regola business e i dati non persistenti possono essere implementati completamente in classi e metodi parziali di entità e nel contesto dati oppure possono essere implementati in classi separate.
Il livello client o di presentazione chiama i metodi nell'interfaccia remota del livello intermedio e il DAL di tale livello eseguirà le query o le stored procedure di cui è stato eseguito il mapping ai metodi DataContext. Il livello intermedio in genere restituisce i dati ai client come rappresentazioni XML di entità o oggetti proxy.
Nel livello intermedio, le entità vengono create dal contesto dati che tiene traccia dello stato e gestisce il caricamento posticipato e l'invio delle modifiche al database. Queste entità sono "collegate" all'oggetto DataContext. Tuttavia, le entità vengono disconnesse dopo l'invio a un altro livello mediante la serializzazione, ovvero DataContext non tiene più traccia del relativo stato. Le entità inviate dal client per gli aggiornamenti devono essere ricollegate al contesto dati prima che LINQ to SQL sia in grado di inviare le modifiche al database. Il client ha lo scopo di fornire al livello intermedio i valori originali e/o i timestamp se richiesti per i controlli di concorrenza ottimistica.
Nelle applicazioni ASP.NET, LinqDataSource gestisce gran parte di questa complessità. Per ulteriori informazioni, vedere Cenni preliminari sul controllo server Web LinqDataSource.
Nella figura seguente viene illustrata l'architettura di base di un'applicazione a più livelli che utilizza LINQ to SQL nel livello di accesso ai dati.
Risorse supplementari
Per ulteriori informazioni sull'implementazione delle applicazioni a più livelli che utilizzano LINQ to SQL, vedere gli argomenti seguenti:
LINQ to SQL con applicazioni client/server strettamente collegate
Recupero dei dati e operazioni CUD in applicazioni a più livelli (LINQ to SQL)
Per ulteriori informazioni sulle applicazioni a più livelli che utilizzano i dataset ADO.NET, vedere Utilizzo dei dataset nelle applicazioni a più livelli.