Spesso nelle applicazioni web si preferisce utilizzare tecniche di aggiornamento dei dati con concorrenza ottimistica, per evitare che l'utilizzo contemporaneo da parte di più utenti possa interferire sulla congruità dei dati.
L'implementazione in questi casi consiste nella verifica che i valori originali delle informazioni che si stanno modificando siano ancora quelli caricati insieme alla pagina, evitando di modificare dati che non sono più validi.
ASP.NET 2.0 supporta questa modalità attraverso i Data Source Control e soprattutto con SqlDataSource c'è un supporto praticamente automatico.
Considerando che, come già ripetuto più volte, l'utilizzo di ObjectDataSource e di un modello ad oggetti è da preferire, è interessante notare come debba essere impostata questa caratteristica in presenza di questo controllo.
<asp:ObjectDataSource ID="AuthorsDataSource" runat="server" DataObjectTypeName="ASPItalia.com.ObjectModel.Author" ConflictDetection="CompareAllValues" OldValuesParameterFormatString="original_{0}" SelectMethod="GetAuthors" TypeName="ASPItalia.com.BizLogic.AuthorManager" UpdateMethod="UpdateAuthor"> </asp:ObjectDataSource>
Come si può notare è necessario specificare le proprietà ConfictDetection, DataObjectTypeName e OldValuesParameterFormatString, per poi modificare la nostra classe di business in maniera tale che possa ricevere due istanze del nostro oggetto, di cui la prima contiene quella con i dati modificati e la seconda quelli originali:
namespace ASPItalia.com.BizLogic { public class AuthorManager { public bool UpdateAuthor(Book book, Book original_book) { // modifica vincolata all'uso dei valori originali return true; } } }
Per maggiori informazioni sui Data Source Control si veda:
Controlli DataSource in ASP.NET 2.0
https://www.aspitalia.com/articoli/asp.net2/DataSource.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Load test di ASP.NET Core con k6
Effettuare il binding di date in Blazor
Implementare il throttling in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8