Hi
In below code i am saving Data in Master table first & then Lines table. I want that Data should get saved simulataneouly in both tables.
If error is encountered at any stage then Data should RollBack in both tables
protected void btnSubmit_Click(object sender, EventArgs e) { string Id = (sender as Button).ID; try { BALTrainingHeader bALTrainingHeader = new BALTrainingHeader(); DateTime? dtFrom = null; DateTime? dtTo = null; if (hdfID.Value == "0") { if (txtdtFrom.Text.Trim() != "") { DateTime PMDate2 = DateTime.ParseExact(txtdtFrom.Text, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture); dtFrom = Convert.ToDateTime(PMDate2.ToString("yyyy-MM-dd")); } if (txtdtTo.Text.Trim() != "") { DateTime PMDate2 = DateTime.ParseExact(txtdtTo.Text, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture); dtTo = Convert.ToDateTime(PMDate2.ToString("yyyy-MM-dd")); } if (dtTo < dtFrom) { ShowMessage("Error", "Date To should be greather than or equal to Date From, Please Try Again", "error"); return; } DateTime StartTime = DateTime.Now; String frTime = ddlTimeFrom.SelectedItem.Value; var frts = TimeSpan.Parse(frTime); String toTime = ddlTimeTo.SelectedItem.Value; var tots = TimeSpan.Parse(toTime); if (dtTo == dtFrom) { if (tots <= frts) { ShowMessage("Error", "To Time should be greather than From Time", "error"); return; } } TrainingHeader Result = bALTrainingHeader.GetRecordDetails(Convert.ToInt32(hdfTrainingId.Value)); Result.TrainingTypeID = Convert.ToInt32(ddlTrainingType.SelectedItem.Value); Result.TrainingModuleID = Convert.ToInt32(ddlTrainingModule.SelectedItem.Value); Result.FromDate = dtFrom; Result.FromTime = frts; Result.ToDate = dtTo; Result.ToTime = tots; Result.UserRemarks = txtRemarks.Text; if (Id == "btnSubmit") { Result.TrainingStatus = "Open"; } else { Result.TrainingStatus = "Drafted"; } Result.Deleted = false; Result.ModifiedOn = Utility.CurrentDateTime(); int Res = bALTrainingHeader.UpdateRecord(Result); if (Res != 0) { bALTrainingHeader.DeleteRecordParticipants(Convert.ToInt32(hdfTrainingId.Value)); if (lstUsers.Items.Count > 0) { for (int i = 0; i < lstUsers.Items.Count; i++) { if (lstUsers.Items[i].Selected) { TrainingParticipant objLine = new TrainingParticipant(); objLine.TrainingID = Convert.ToInt32(hdfTrainingId.Value); objLine.ParticipantID = Convert.ToInt32(lstUsers.Items[i].Value); objLine.TrainingParticipantType = ddlWhom.SelectedItem.Value; objLine.Deleted = false; objLine.EntryDate = Utility.CurrentDateTime(); int objResult = bALTrainingHeader.AddRecordParticipant(objLine); } } ShowMessageWithRedirect("", "Record Saved Successfully", "success", "DraftedTrainingList"); } } } } catch (Exception ex) { Utility.SaveErrorLog(ex.Message, System.IO.Path.GetFileName(Request.Path), System.Reflection.MethodBase.GetCurrentMethod().Name, hdfEmpNumber.Value); ShowMessage("Oops...", ex.Message, "error"); } }
Thanks