Se il Fill serve a ripartire da una situazione "pulita" e da dati aggiornati, perché non applicarlo a una istanza ex novo di DataSet invece che a una istanza esistente che, in questo modo, deve essere alterata col rischio di contrassegnare record come "da eliminare" quando invece si vogliono invece ignorare/scartare?
Occorre fare attenzione all'uso dell'accoppiata DataSet/Adapter quando si adotta il modello "briefcase".
Il concetto è: il Fill viene effettuato per riempire un DataSet con i dati da modificare; una volta apportate le modifiche, il database deve essere aggiornato passando il DataSet al metodo Update dell'Adapter; eseguito l'update, il DataSet e il database devono essere considerare "allineati", senza la necessità di dover effettuare ulteriori operazioni, in quanto l'update prende lo stato del DataSet e lo riflette su DB, quindi DB e DataSet sono già allineati senza bisogno di Fill.
Come parere personale, trovo che il modello - al giorno d'oggi - sia abbastanza superato: meglio accedere direttamente con oggetti DataReader e scaricare le informazioni all'interno di oggetti (istanze di classi) che fanno parte del modello di business, lavorando con quelli e aggiornando il database direttamente con metodi specifici e dedicati, usando magari dei pattern come quello del Repository.
Insomma, la situazione mi sembra che stia diventando un po' intricata, probabilmente anche per limitazioni degli oggetti utilizzati nati a suo tempo per sopperire a necessità che oggi iniziano a venire meno.
Ciao!