ObjectDataSource di ASP.NET 2.0 con aggiornamento ottimistico

di Daniele Bochicchio, in ASP.NET 2.0, DataBinding, GridView,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi