Personally, I avoid the CommandBuilder and prefer to roll my own. But, first to answer your question:
MyDataSet.Tables[0].PrimaryKey = new DataColumn[] { MyDataSet.Tables[0].Columns["MyPK"] }; Aren't you the big proponent of typed datasets? Shouldn't it be...
DtMyTable.PrimaryKey = new DataColumn[] { DtMyTable.MyPK};
Keep up the talk on untyped datasets, and I'm gonna have to send a letter to your employer. ;)
JUST KIDDING!