Under dotNet, you fill a DataSet from the database in your DataSource. For many practical purposes, this puts the database in memory for you. With a BindingNavigator and bound fields on a form, you can move from record to record, making changes as desired. You can also add records and delete records, and all these changes get made to the DataSet. You then have to take another step to update the database with the contents of the DataSet.
In my previous experience, I had always learned that you want to save to the database as soon as edits are complete. Otherwise, suppose Joe spends most of the morning updating records, and then the power fails. Or maybe Joe goes to lunch, leaving everything open, and all that time, other people are accessing and editing the records he had already edited but not saved to the database.
Also, neither the DataGridView nor any of the other data-related controls seem to support paging. By paging, I'm referring basically to what Google does. When you search (query), you don't get all the results. You get a page of results, and if you want more, you ask for the next page. This makes response snappier and uses less memory and bandwidth. Is it that now that everyone hasgigabytes of memory, paging is no longer necessary? Do we really load all 50,000 records or whatever into an in-memory DataSet?
I've tagged this as a "discussion," and I hope it shows up like that because I don't really have a coding question. I'm more interested in how everyone else designs data-driven applications.