Quote Originariamente inviata da Veronica80 Visualizza il messaggio
Come saprete il metodo UPDATE di una datatable lancia in automatico un acceptChanges() il che è anche utile direi.
Io pensavo che l'acceptChanges() però riguardasse solo la tabella in oggetto di UPDATE mentre così non è...
[...]
Come si può ovviare a questo problema? Qualcuno ci si è mai scontrato?
Direi che rientra perfettamente nel funzionamento del meccanismo. Il DataSet è progettato per contenere più tabelle replicando all'occorrenza i legami (foreign keys) presenti tra le stesse, scaricando una copia dei dati e disconnettendosi completamente dal database.

A questo punto, questa copia di dati può essere modificata in tutti i modi, aggiungendo/modificando/eliminando righe da tutte le tabelle, in pratica modificando la fotografia scaricata in precedenza dal database.

L'uso dell'Adapter e del metodo Update() consentono di aggiornare il database con tutte le modifiche apportate all'insieme dei dati che sono contenuti nel DataSet, in modo da portarle su DB e considerarle "accettate" nella copia locale in memoria rappresentata dal DataSet.

Utilizzando lo stesso DataSet, o applicando un Fill() a un nuovo DataSet, teoricamente è possibile ripartire da capo con il ciclo.

Questo è almeno quello che conosco del modello "briefcase" e di come è implementato in .NET, così come è presente in altri linguaggi (es. Delphi) con componenti similari (ClientDataSet, MemTable, ecc.).

Ciao!