private void AddNewAndEditOldQuestions(Activity activity, CustomDBContext dbContext) { foreach (var question in activity.Questions) { var originalQuestion = dbContext.Questions.Find(question.Id); if (originalQuestion == null) { dbContext.Questions.Add(question); } else { dbContext.Entry(originalQuestion).CurrentValues.SetValues(question); } } }
private void AddNewAndEditOldFuturePlans(Report report, CustomDBContext dbContext) { foreach (var futurePlan in report.FuturePlans) { var originalFuturePlan = dbContext.FuturePlans.Find(futurePlan.Id); if (originalFuturePlan == null) { dbContext.FuturePlans.Add(futurePlan); } else { dbContext.Entry(originalFuturePlan).CurrentValues.SetValues(futurePlan); } } }
private void AddNewAndEditOldActivities(Report report, CustomDBContext dbContext) { foreach (var activity in report.Activities) { var originalActivity = dbContext.Activities.Find(activity.Id); if (originalActivity == null) { dbContext.Activities.Add(activity); } else { dbContext.Entry(originalActivity).CurrentValues.SetValues(activity); } AddNewAndEditOldQuestions(activity, dbContext); } }
public void Edit(Report report) { using (var dbContext = new CustomDBContext(connectionString)) { var transaction = dbContext.Database.BeginTransaction(); //Remove RemoveNonexistentActivities(report, dbContext); RemoveNonexistentFuturePlans(report, dbContext); //Edit and add var originalReport = dbContext.Reports.Find(report.Id); dbContext.Entry(originalReport).CurrentValues.SetValues(report); AddNewAndEditOldActivities(report, dbContext); AddNewAndEditOldFuturePlans(report, dbContext); transaction.Commit(); dbContext.SaveChanges(); } }