/// <summary> /// Boiler-plate code to update the Issue object based on /// the given exported row. /// </summary> /// <param name="issue"></param> /// <param name="exportedRow"></param> private static void UpdateIssue(Issue issue, DataRow exportedRow) { DateTime dt; // This is the coolest code ever issue.PRN = exportedRow.Field<int>("PRN"); issue.RequestType = exportedRow["Request Type"].ToString(); issue.Title = exportedRow["Title"].ToString(); issue.AssignedTo = exportedRow["Assigned To"].ToString(); issue.ReportedBy = exportedRow["Reported By"].ToString(); issue.Status = exportedRow["Status"].ToString(); issue.Priority = exportedRow.Field<int>("Priority"); issue.Severity = exportedRow["Severity"].ToString(); issue.DateReported = DateTime.Parse(exportedRow["Date Reported"].ToString()); if (DateTime.TryParse(exportedRow["Fix Date"].ToString(), out dt)) issue.DateFixed = DateTime.Parse(exportedRow["Fix Date"].ToString()); if (DateTime.TryParse(exportedRow["Close Date"].ToString(), out dt)) issue.DateClosed = DateTime.Parse(exportedRow["Close Date"].ToString()); issue.AssignedToProject = exportedRow["Assigned to Project"].ToString(); issue.ReportedInVersion = exportedRow["Reported In Version"].ToString(); issue.CodeReviewed = exportedRow["Code Reviewed"].ToString(); issue.Product = exportedRow["Product"].ToString(); issue.Component = exportedRow["Component"].ToString(); }
partial void DeleteIssue(Issue instance);
partial void UpdateIssue(Issue instance);
partial void InsertIssue(Issue instance);
/// <summary> /// Import the given history changes into SQL. /// </summary> /// <param name="history"></param> private void ImportHistory(DataTable history) { try { // Get a comma-delimited list of RPNs for log statement List<string> prns = new List<string>(); foreach (DataRow row in history.Rows) { prns.Add(row["PRN"].ToString()); } logger.Debug("Importing the following " + history.Rows.Count + " changed issues: " + string.Join(",", prns.ToArray())); // Update and add issues using (ETCMDataContext etcm = new ETCMDataContext()) { Dictionary<int, Issue> newIssues = new Dictionary<int, Issue>(); // Loop through the changes foreach (DataRow change in history.Rows) { int changedPRN = change.Field<int>("PRN"); Issue existingIssue = (from i in etcm.Issues where i.PRN == changedPRN select i).SingleOrDefault(); Issue issue = existingIssue; if (existingIssue == null) { // This is a new issue, handle case of update(s) to new issue if (!newIssues.TryGetValue(changedPRN, out issue)) { issue = new Issue(); newIssues.Add(changedPRN, issue); } } UpdateIssue(issue, change); } etcm.Issues.InsertAllOnSubmit(newIssues.Values); etcm.SubmitChanges(); } logger.Debug("Done importing changed issues"); } catch (Exception e) { logger.Error("Error imported changes into ETCM database", e); throw e; } }