#109 - Effettuare il Binding in WPF di una query Entity Framework
di Cristian Civera, in Entity Framework, Windows Presentation Foundation, 20 marzo 2009
Archiviato in: .NET Framework, .NET Framework 3.0, .NET Framework 3.5, Entity Framework, LINQ, Windows Presentation Foundation, XAML
Durante lo sviluppo di applicazioni con Windows Presentation Foundation è molto probabile che questa debba accedere ad una sorgente dati, per interrogarla e manipolarla. Se si è scelto di usare ADO.NET Entity Framework vi sono alcuni aspetti che vanno tenuti in considerazione quando si intende caricare le entità attraverso il motore di Binding di WPF.
Innanzitutto bisogna considerare il fatto che qualsiasi EntityObject - classe base di tutte le entità - EntityReference - classe per rappresentare una relazione uno ad uno - EntityCollection - classe per rappresentare una relazione uno a molti - e ObjectResult - oggetto restituito dal metodo ObjectContext.ExecuteFunction - implementano l'interfaccia IListSource che permette di restituire la lista contenente una o più entità. Perciò ogni qual volta si assegna un espressione di Binding, la query viene eseguita immediamente per avere una collezione finita di oggetti.
Oltre a ciò, l'oggetto restituito è di tipo IBindingList, perciò la vista che il motore di WPF crea è di tipo BindingListCollectionView e supporta le interfacce ICollectionView e IEditableCollectionView. Questo significa che dove il controllo lo supporti, è possibile interrogare la sorgente dati, ma anche aggiungere e rimuovere elementi sul relativo ObjectContext e motore di tracking.
Non è possibile invece effetuare l'ordinamento, mentre il raggrupamento e il filtro vengono effettuate attraverso il BindingListCollectionView, perciò tramite .NET e non portando la query sul database relazionale.
E' supportata inoltre la transazionalità della modifica di un'entità (sfruttato dal DataGrid) per l'aggiunta e relativo commit o rollback dell'operazione.
Si consiglia infine di creare delle proprietà nel code-behind, o nell'eventuale vista che si utilizza per il contesto dati, in modo che questa restituista l'ObjectQuery desiderato, comprensivo inoltre di eventuali dati figli da includere usando il metodo Include. In scenari di master/details infatti, è necessario caricare anche le relazioni, poiché non è disponibile il lazy loading.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
-
#190 - Utilizzare il metodo SetModifiedProperty per aggiornare solo alcune proprietà di una entity
-
.NET Framework 4.0 e VS 2010 in Release Candidate
-
tutte le breaking changes di #netfx4: http://u.aspitalia.com/g0 via @shanselman #vs10ita
-
Open Data Protocol e WCF Data Services
-
La piattaforma Microsoft per il cloud computing: Windows Azure
-
#156 - Recuperare le proprietà di una classe tramite i metadati con Entity Framework
-
#151 - Disabilitare Aero programmaticamente per incrementare le performance di WPF
-
ModelVirtualCasting: un'applicazione completa per .NET Framework 4.0 e Silverlight 4.0
-
#199 - Leggere e scrivere XAML con il .NET Framework 4.0
-
#176 - Ottimizzare l'aggiornamento di una entity sul database con Entity Framework
-
#148 - Scoprire le pagine attualmente più richieste su IIS con LINQ e Microsoft.Web.Administration

Commenti
mi piace
non mi piace
Facebook
Twitter










