Utilizzo di dati delle entità
Entity Framework compila i metadati del modello concettuale e del modello di archiviazione, insieme ai mapping tra i modelli, in coppie bidirezionali di istruzioni Entity SQL chiamate visualizzazioni client. Queste visualizzazioni guidano l'elaborazione delle query e degli aggiornamenti nel motore di runtime. Il compilatore di mapping che genera le visualizzazioni può essere richiamato in fase di progettazione o in fase di esecuzione quando viene eseguita la prima query su un modello concettuale.
Entity Framework è compilato in base a provider di dati ADO.NET specifici dell'archiviazione fornendo un oggetto EntityConnection a un provider di dati e a un'origine dati sottostanti.
Quando una query viene eseguita, viene analizzata e convertita in una struttura ad albero dei comandi canonica, ovvero una rappresentazione del modello a oggetti della query. Le strutture ad albero dei comandi canoniche rappresentano comandi di selezione, aggiornamento, inserimento ed eliminazione. Tutte le elaborazioni successive vengono eseguite nella struttura ad albero dei comandi, che costituisce il mezzo di comunicazione tra il provider System.Data.EntityClient e il provider di dati .NET Framework sottostante, ad esempio System.Data.SqlClient.
Nel diagramma seguente viene illustrata l'architettura di Entity Framework per l'accesso ai dati:
Esecuzione di query sugli oggetti
Gli strumenti di ADO.NET Entity Data Model generano una classe derivata da ObjectContext che rappresenta il contenitore di entità definito nel modello concettuale. La classe ObjectContext supporta le query su un modello concettuale che restituiscono entità come oggetti, nonché la creazione, l'aggiornamento e l'eliminazione di oggetti entità. Entity Framework supporta query di oggetto su un modello concettuale. Le query possono essere create utilizzando metodi del generatore di query di oggetto, Entity SQL e LINQ (Language Integrated Query).
In un modello concettuale le entità sono correlate tra loro tramite associazioni. Nel livello oggetti queste associazioni vengono rappresentate da proprietà che espongono raccolte di oggetti correlati basate su un riferimento all'entità. Nel modello School, ad esempio, Department.Course consente di ottenere una raccolta di entità di oggetti Course in base all'associazione tra Course e Department. Se la proprietà LazyLoadingEnabled della classe ObjectContext è impostata su false, gli oggetti a cui si fa riferimento non vengono caricati automaticamente ed è necessario chiamare il metodo Load sul riferimento all'entità per caricare i dati degli oggetti correlati nel contesto dell'oggetto.
Nota: |
---|
Se Entity Data Model Designer è stato utilizzato per generare il codice del livello oggetti, la proprietà LazyLoadingEnabled della classe ObjectContext è impostata su true per impostazione predefinita. |
È inoltre possibile specificare un percorso della query che definisce quali oggetti correlati da caricare con gli oggetti restituiti. Per ulteriori informazioni, vedere Esecuzione di query su un modello concettuale (Entity Framework).
Nell'esempio seguente della guida rapida viene illustrata una query che, in caso di esecuzione, consente di recuperare tutti gli oggetti Department. Una definizione del percorso della query garantisce che vengano restituiti anche gli oggetti Course correlati agli oggetti Department. Una clausola ORDER BY di Entity SQL consente di ordinare gli oggetti restituiti in base a Name.
' Define a query that returns all Department objects
' and related Course objects, ordered by name.
Dim departmentQuery As ObjectQuery(Of Department) = _
From d In schoolContext.Departments.Include("Courses") _
Order By d.Name _
Select d
// Define a query that returns all Department
// objects and course objects, ordered by name.
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
orderby d.Name
select d;
Per ulteriori informazioni, vedere Esecuzione di query su un modello concettuale (Entity Framework).
È possibile definire un set di modelli in cui vengono utilizzate stored procedure per eseguire query nell'origine dati. I set di risultati di queste stored procedure sono mappati alle entità nel modello concettuale. Per ulteriori informazioni, vedere How to: Import a Stored Procedure.
Utilizzo di oggetti
Un oggetto in un contesto dell'oggetto è una rappresentazione di un tipo di entità dei dati nell'origine dati. È possibile modificare, creare ed eliminare oggetti in un contesto dell'oggetto. Il contesto dell'oggetto gestisce le identità e le relazioni tra gli oggetti. È anche possibile serializzare gli oggetti e associare gli oggetti ai controlli. Per ulteriori informazioni, vedere Utilizzo di oggetti (Entity Framework).
Nell'esempio seguente della guida rapida viene ottenuta una raccolta di oggetti Course correlati a un oggetto Department e la raccolta viene associata a un controllo DataGridView.
' Get the object for the selected department.
Dim department As Department = _
CType(Me.departmentList.SelectedItem, Department)
' Bind the grid view to the collection of Course objects
' that are related to the selected Department object.
courseGridView.DataSource = department.Courses
//Get the object for the selected department.
Department department = (Department)this.departmentList.SelectedItem;
//Bind the grid view to the collection of Course objects
// that are related to the selected Department object.
courseGridView.DataSource = department.Courses;
Entity Framework consente di rilevare le modifiche ai dati delle entità e di rendere persistenti le modifiche nell'origine dati. Nell'esempio riportato di seguito della Guida rapida le modifiche nel contesto dell'oggetto vengono scritte nel database.
' Save object changes to the database,
' display a message, and refresh the form.
schoolContext.SaveChanges()
Per ulteriori informazioni, vedere Creazione, aggiunta, modifica ed eliminazione di oggetti (Entity Framework).
È possibile definire un modello concettuale in cui vengono utilizzate stored procedure per inserire, aggiornare ed eliminare i dati nell'origine dati. Queste stored procedure sono mappate alle entità nel modello concettuale. Per ulteriori informazioni, vedere Walkthrough: Mapping an Entity to Stored Procedures.
Vedere anche
Concetti
Utilizzo di oggetti (Entity Framework)
Query in LINQ to Entities