Datasets VS objects
One of things that makes me feel left out is how the InitializeComponent initialisation occurs and how it affects getting exisitng data (e.g serialized data perstisted as xml to the HDD) is populated...

I guess this down to how you expose the datasource... and implement it using the fantastic RAD approach of drag and drop...
How about creating a kind of factory component class?

I am looking to replicate the behaviour of what happens when you add a datasource to a project and then drag a datatable onto a form really...  The population which occurs via the tableadapter can be achieved by another class agreed...but....

A bindingsource bound to a dataset is bound to an instance of the dataset where as the object binding uses a typeof....

I can't find a best practive for this as yet...
this code is cut short for brevity...

private void InitializeComponent(){
//dataset

....

this.myDBDataSet= new winformdataviewdemo.myDBDataSet();

this.customerBindingSource = new System.Windows.Forms.BindingSource(this.components);

this.customerTableAdapter = new winformdataviewdemo.myDBDataSetTableAdapters.customerTableAdapter ();

this.customerBindingSource .DataMember = "customer";

this.customerBindingSource .DataSource = this.myDBDataSet;
........

///data bound object

this.customerObjectBindingSource.DataSource = typeof(objectclass.customerObject);

//this.customerObjectBindingSource.DataSource = customerObject1 ... would be nice

}

private void Form1_Load(object sender, EventArgs e){
this.customerTableAdapter .Fill(this.myDBDataSet.customers);
//Hey presto databound controls show the data

// so how about the customer object...?
//The constructor will not have been called yet...
//not until the bindingsource.add method is called...


}