Panoramica su LINQ to Entities
La maggior parte delle applicazioni aziendali viene attualmente scritta per l'accesso ai dati di database relazionali. A un certo punto, queste applicazioni dovranno interagire con i dati rappresentati in forma relazionale. Il modello relazionale è ottimizzato per garantire efficienza di archiviazione e recupero, non per la modellazione concettuale utilizzata nella programmazione orientata a oggetti. Più tabelle normalizzate corrispondono spesso a una singola classe e le relazioni tra le classi non sono rappresentate nello stesso modo delle relazioni tra le tabelle. Gli sviluppatori di applicazioni aziendali devono spesso utilizzare due o più linguaggi di programmazione: un linguaggio di alto livello per i livelli di presentazione e della logica di business (ad esempio Visual C# o Visual Basic) e un linguaggio di query per interagire con il database (ad esempio Transact-SQL). Tale necessità non solo richiede una conoscenza approfondita di diversi linguaggi da parte degli sviluppatori, ma provoca anche problemi di mancata corrispondenza tra linguaggi nell'ambiente di sviluppo. In un'applicazione che utilizza un'API di accesso ai dati per eseguire una query su un database, ad esempio, la query viene specificata come valore letterale stringa racchiuso tra virgolette. Questa stringa di query è tuttavia opaca per il compilatore e non è possibile eseguire su di essa un controllo per verificare la presenza di errori, ad esempio l'utilizzo di sintassi non valida o l'effettiva esistenza delle colonne o delle righe cui fa riferimento. Non viene eseguito il controllo dei tipi dei parametri di query, né è disponibile il supporto per IntelliSense.
Entity Framework consente agli sviluppatori di utilizzare i dati in forma di proprietà e oggetti specifici di un dominio, ad esempio clienti e indirizzi dei clienti, senza dovere pensare alle colonne e alle tabelle di database sottostanti dove sono archiviati questi dati. Per ulteriori informazioni, vedere Entity Data Model. LINQ consente agli sviluppatori di formulare query basate su insiemi nel codice dell'applicazione, senza dover utilizzare un linguaggio di query distinto. Tramite l'infrastruttura Object Services di Entity Framework, ADO.NET espone una visualizzazione concettuale comune dei dati, inclusi i dati relazionali, come oggetti nell'ambiente .NET. In questo modo, il livello di oggetti diventa la destinazione ideale per il supporto LINQ. Questa tecnologia LINQ, LINQ to Entities, consente agli sviluppatori di creare query flessibili e fortemente tipizzate sul contesto dell'oggetto Entity Framework utilizzando espressioni LINQ e gli operatori di query standard LINQ direttamente dall'ambiente di sviluppo. Le query sono espresse nel linguaggio di programmazione stesso e non come valori letterali stringa incorporati nel codice dell'applicazione, come nel caso di applicazioni scritte in Microsoft .NET Framework versione 2.0. Eventuali errori di sintassi ed errori nei nomi di membri e nei tipi di dati verranno rilevati dal compilatore e segnalati in fase di compilazione, riducendo i possibili problemi relativi ai tipi tra Entity Data Model e l'applicazione.
Le query LINQ to Entities utilizzano l'infrastruttura Object Services. La classe ObjectContext è la classe primaria per l'interazione con Entity Data Model come oggetti CLR. Lo sviluppatore costruisce un'istanza di ObjectQuery generica tramite ObjectContext. La classe generica ObjectQuery rappresenta una query che restituisce un'istanza o un insieme di entità tipizzate. Gli oggetti entità restituiti possono essere aggiornati e si trovano nel contesto dell'oggetto. Questo vale anche per gli oggetti entità restituiti come membri di tipi anonimi.
Contenuto della sezione
- LINQ ed Entity Data Model
Viene fornita una panoramica su LINQ e Entity Data Model.
- Procedura: creare un progetto LINQ to Entities in Visual Studio
Vengono fornite informazioni su come creare un progetto LINQ to Entities in Visual Studio.
- Procedura dettagliata: creare il modello Sales di AdventureWorks ed eseguire una query (Visual Basic)
Viene descritto uno scenario LINQ to Entities end-to-end di base con un livello di complessità minimo.
- Procedura dettagliata: creare il modello Sales di AdventureWorks ed eseguire una query (C#)
Viene descritto uno scenario LINQ to Entities end-to-end di base con un livello di complessità minimo.