Esecuzione di query su entità e associazioni (guida rapida di Entity Framework)
In questa attività verranno create query fortemente tipizzate sugli oggetti CLR che rappresentano entità e associazioni nel modello School e verranno associati controlli di visualizzazione agli insiemi di oggetti restituiti da queste query.
Per eseguire una query sui dipartimenti nel database School
All'inizio del file di codice per il form CourseViewer aggiungere le seguenti istruzioni using (C#) o Imports (Visual Basic) per fare riferimento al modello creato dal database School e allo spazio dei nomi dell'entità.
Imports System.Data.Objects Imports System.Data.Objects.DataClasses
using System.Data.Objects; using System.Data.Objects.DataClasses;
All'inizio della definizione di classe parziale per il form CourseViewer aggiungere il codice seguente che consente di creare un'istanza di ObjectContext.
' Create an ObjectContext instance based on SchoolEntity. Private schoolContext As SchoolEntities
// Create an ObjectContext instance based on SchoolEntity. private SchoolEntities schoolContext;
Nella finestra di progettazione dei form di CourseViewer fare doppio clic sul form CourseViewer.
Verrà visualizzata la pagina di codice per il form e verrà creato il metodo del gestore eventi courseViewer _Load.
Nel metodo del gestore eventi courseViewer _Load copiare e incollare il codice seguente che consente di definire l'oggetto DataGridView, di eseguire una query che restituisce un insieme di reparti (ordinato in base a Name) e di associare l'insieme di oggetti Department al controllo departmentList.
' Initialize the ObjectContext. schoolContext = New SchoolEntities() ' Define a query that returns all Department objects and related ' Course objects, ordered by name. Dim departmentQuery As ObjectQuery(Of Department) = _ schoolContext.Department.Include("Course").OrderBy("it.Name") Try ' Bind the ComboBox control to the query, which is ' executed during data binding. Me.departmentList.DataSource = departmentQuery Me.departmentList.DisplayMember = "Name" Catch ex As Exception MessageBox.Show(ex.Message) End Try
// Initialize the ObjectContext. schoolContext = new SchoolEntities(); // Define a query that returns all Department objects and related // Course objects, ordered by name. ObjectQuery<Department> departmentQuery = schoolContext.Department.Include("Course").OrderBy("it.Name"); try { // Bind the ComboBox control to the query, which is // executed during data binding. this.departmentList.DataSource = departmentQuery; this.departmentList.DisplayMember = "Name"; } catch (Exception ex) { MessageBox.Show(ex.Message); }
Per visualizzare i corsi per il dipartimento selezionato
Nella finestra di progettazione dei form di CourseViewer fare doppio clic sul controllo departmentList.
Verrà creato il metodo del gestore eventi departmentList_SelectedIndexChanged.
Incollare il codice seguente che consente di caricare i corsi correlati al dipartimento selezionato.
Try ' 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.Course courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells) Catch ex As Exception MessageBox.Show(ex.Message) End Try
try { // 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.Course; courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); } catch (Exception ex) { MessageBox.Show(ex.Message); }
Passaggi successivi
Sono state create correttamente query che restituiscono oggetti Department e Course e tali oggetti sono stati associati ai controlli. Le modifiche apportate agli oggetti Course nella griglia dei dati verranno quindi di nuovo salvate nel database: Inserimento e aggiornamento di dati (guida rapida di Entity Framework).
Vedere anche
Concetti
Altre risorse
Esempi (Entity Framework)
Object Services (Entity Framework)