Gestire situazioni in cui si hanno problemi di concorrenza tra utenti con i WCF RIA Services è veramente molto semplice, supponiamo di voler sapere se durante un operazione di update qualcuno ha modificato prima di noi gli stessi records.
Il codice da scrivere è il seguente:

private void OnUpdate(object sender, RoutedEventArgs e)
{
 this.customersContext.SubmitChanges(lop =>
    {
       if(lop.HasError)
       {
          MessageBox.Show(lop.EntitiesInError.Count().ToString());
       }
 
    }, null);
}

Quello che è importante conoscere dello snippet sopra indicato è che il contenuto della proprietà EntitiesInError cambia a seconda del provider di accesso ai dati e da come questo gestisce la unit-of-work.
Se utilizzate Entity Framework, indipendentemente dai records effettivamente in conflitto otterrete sempre 1, mentre se utilizzate il tanto ‘denigrato’ LinqToSQL otterrete il numero corretto.

Technorati Tags: ,