protected void Page_Load(object sender, EventArgs e) { this.oStates = (StateNames)this.RegisterBizObj(new StateNames()); this.oObject1 = (Object1)this.RegisterBizObj(new Object1()); this.oObject3 = (Object3)this.RegisterBizObj(new Object3()); this.oObject2 = (Object2)this.RegisterBizObj(new Object2()); this.oObject1.RegisterChildBizObj(oObject2); this.oObject1.RegisterChildBizObj(oObject3); if (!IsPostBack) { this.oStates.GetAllEntities(); oObject1.NewRow(); oObject2.NewRow(); oObject3.NewRow(); Session["dsObject1"] = oObject1.DataSet; Session["dsObject2"] = oObject2.DataSet; Session["dsObject3"] = oObject3.DataSet; } } protected void btnSubmit_Click(object sender, EventArgs e) { DataSet dsNewObj1; DataSet dsNewObj2; DataSet dsNewObj3; mmSaveDataResult Result; bool doRollback = false; int saltSize = 5; string salt = CreateSalt(saltSize); string passwordHolder; // get the new entity datasets from the session dsNewObj1 = (DataSet)Session["dsObject1"]; dsNewObj2 = (DataSet)Session["dsObject2"]; dsNewObj3 = (DataSet)Session["dsObject3"]; // start a transaction for each insert oObject1.TransactionBegin(); try { // validate that the password fields match if (txtPassword.Text != txtConfirmPassword.Text) { // add my own broken rule oObject1.Rules.AddErrorProviderBrokenRule("password", "passwords do not match", "WebUsers"); Result = mmSaveDataResult.RulesBroken; } else { // passwords match // encrypt the password for storage string passwordHash = CreatePasswordHash(txtPassword.Text, salt); passwordHolder = txtPassword.Text; // replace the password in the dataset with the hashed password txtPassword.Text = passwordHash; // attempt to save the user to the database Result = this.Save(this.oObject1, dsNewObj1, this.oObject1.TableName); // set it back to what it was txtPassword.Text = passwordHolder; } if (Result == mmSaveDataResult.RulesPassed) { // add 30 days to surveyor renewal date while accpeting checks dsNewObj2.Tables["Surveyors"].Rows[0]["renewal_date"] = DateTime.Now.Date.AddDays(31); // try to save surveyor if (this.Save(this.oObject2, dsNewObj2, this.oObject2.TableName) != mmSaveDataResult.RulesPassed) { doRollback = true; } else { UpdateCoordinates(dsNewObj3.Tables[oObject3.TableName].Rows[0]); // try to save contact information if (this.Save(this.oObject3, dsNewObj3, this.oObject3.TableName) != mmSaveDataResult.RulesPassed) { doRollback = true; } } // if something didn't work, rollback database transaction if (doRollback) { oObject1.TransactionRollback(); } else { // everything worked, commit the database transactions oObject1.TransactionCommit(); // store userid in the session Session["uid"] = oObject1.Entity.webuser_id; Session["uname"] = oObject1.Entity.username; Response.Redirect("PaymentInfo.aspx"); } } } catch (Exception ex) { oObject1.TransactionRollback(); throw ex; } }Any help you could give would be greatly appreciated.