Nello script #960 abbiamo visto come il controllo EntityDataSource renda possibile l'integrazione di ADO.NET Entity Framework con l'architettura a provider dei DataSource di ASP.NET, permettendoci quindi utilizzare un entity data module come sorgente dati di controlli quali GridView, ListView, Repeater, ecc...
EntityDataSource offre pieno supporto a qualsiasi operazione sulle entity del modello di dominio e, oltre che in fase di fetch, può essere utilizzato anche per persistere le modifiche sul database; dopo aver creato un entity data module e averlo referenziato da una EntityDataSource, come descritto nello script sopra citato, è sufficiente attivare tale funzionalità agendo sulle proprietà EnableInsert, EnableUpdate ed EnableDelete:
<asp:EntityDataSource ID="edsCustomers" runat="server" ConnectionString="name=SampleContext" DefaultContainerName="SampleContext" EnableDelete="True" EnableInsert="True" EnableUpdate="True" EntitySetName="Customers"> </asp:EntityDataSource>
L'unico svantaggio è quello di non poter personalizzare la clausola Select, che è supportata solo per la modalità ReadOnly. A questo punto è sufficiente referenziare la nuova sorgente dati in un controllo ListView, ad esempio:
<asp:ListView ID="lsvCustomers" runat="server" DataKeyNames="Id" DataSourceID="edsCustomers" InsertItemPosition="LastItem"> <%-- ...qui i template... --%> </asp:ListView>
per riuscire in maniera del tutto trasparente ad effettuare ogni tipo di operazione sulla entity Customer del container SampleContext:
Per default, EntityDataSource memorizza i valori originali delle entity all'interno del ViewState, in modo che questi possano essere utilizzati per eventuali check sulla concorrenza. Questo comportamento può potenzialmente rendere parecchio "pesanti" le pagine, ma fortunatamente può essere disattivato agendo sulla proprietà StoreOriginalValuesInViewState, nel caso in cui il lock ottimistico non venga gestito dall'applicativo.
EntityDataSource espone anche un set di eventi, sia di preview (Inserting, Updating e Deleting) che di postview (Inserted, Updated, Deleted) che è possibile intercettare per modificare i dati prima che questi vengano persistiti, per annullare l'operazione di salvataggio o per gestire le eventuali eccezioni generate da quest'ultima.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Change tracking e composition in Entity Framework
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Usare le navigation property in QuickGrid di Blazor
Generare velocemente pagine CRUD in Blazor con QuickGrid
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Le novità di Entity Framework 8
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Effettuare il binding di date in Blazor
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
I più letti di oggi
- ora è la volta di #azure. http://aspitalia.com/build-win8 #BldWin
- Implementare il pattern Dispose del .NET Framework
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare la cancellazione logica in #azure Container Registry https://aspit.co/ccy di @CristianCivera
- Centrare elementi in HTML tramite CSS
- Annunciato #PowerBI Embedded e disponibile in preview a partire da oggi! https://aspit.co/build2016 #build2016
- con il code inspector si potrà vedere il codice server associato all'HTML prodotto, ... http://aspitalia.com/build-win8 #BldWin
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!