OK, heres some tips (cause i've had the same angst as you have now with it)
when you make a change to an underlying table, the change needs reflecting. Sometimes this is as simple as changing the Data Type or Max Length property of the row in the DataTable
If you added or dropped a column, you need to reconfigure the datatable. Right click it and choose configure, Assure that the SQL that embodies the table is correct w.r.t the new column. Click OK
Likely the designer will make a nice scrappy mess of your update and insert, though it does ask "Do you want to overwrite the I/U/D statements too?"
I say no, and edit them manually.
If using stored procedures, you must also visit the parameters colelction of the command and update the parameters as well as updating any underlying stored procedures in the DB if necessary. (DB changes are not light hearted work!
)
As for maintaining relationships in VS; it's not really for that. If you have one set of tables in your database you might have several datasets, simply because if you have a form that edits one table, you dont want to create a set of 420 tables to do this. My current app has 3 DataSets.. Hub is for all data that changes, Lookup is for lookup data like combobox DIsplay/Value member stuff and Ghost is for tables that dont exist, stored procedures that dont do anything with one table or affect lots of tables - all the junk that cant be tied to one clear table in my Hub
On the relational note, you dont make any more datarelation objects than you need in VS. I've never seen them to be of use during updates or deletes (though i use them for relational stuff only) and the relations in the set might not always run in the same direction as the relationship in the database.. The direction that the relationship runs in is determined by which table is the parent and which is the child. The parent table is the one you search on and load the DataTable with first (suppose it's customer data) then suppose for every customer you loaded, you load his orders into the Orders data table. Then for every Product ID in the Orders, you load the product data..
If you imagine this in your mind you might see you have:
Customer.CustomerID]8-------F[Orders.CustomerID
Product.ProductID]F--------8[Orders.ProductID
8 is the little infinity symbol (or M), F is the key symbol (or 1 if youre used to 1:M notation)
but in your dataset you might arrange this:
Customer.CustomerID]8-------F[Orders.CustomerID
Product.ProductID]8--------F[Orders.ProductID
because you want the orders productID to be used to drive a relation from orders into products. Its weird, but once you ahve to build and do it, it makes sense
So; dont be afraid of DataSet changes (though those dreaded "Form could not be loaded.. XXX is not present on the datasource" errors in Forms designer are a NUISANCE
- need solving in code view on the from1.Designer.VB), they arent that bad
And use relationships according to the driving order rather than the true 1:M layout of the database relationships