Я пытаюсь обновить / отредактировать 2 таблицы одновременно в MVC, код, указанный ниже:
ActivityDao:
public bool Update(Activity entity)
{
try
{
var activity = db.Activities.Find(entity.ActivityId);
activity.Name = entity.Name;
activity.Description = entity.Description;
activity.ActivityGroupId = entity.ActivityGroupId;
activity.AccountantCode = entity.AccountantCode;
activity.DonorCode = entity.DonorCode;
activity.ParentActivityId = entity.ParentActivityId;
activity.ProjectId = entity.ProjectId;
activity.ContractorId = entity.ContractorId;
activity.UserInCharge = entity.UserInCharge;
activity.StartDate = entity.StartDate;
activity.EndDate = entity.EndDate;
activity.TotalBudget = entity.TotalBudget;
activity.BudgetLimit = entity.BudgetLimit;
activity.AmountOnPaper = entity.AmountOnPaper;
activity.PaidAmount = entity.PaidAmount;
activity.TheRest = entity.TheRest;
activity.IsLocked = entity.IsLocked;
activity.Status = entity.Status;
activity.ModifiedBy = entity.ModifiedBy;
activity.ModifiedDate = DateTime.Now;
db.SaveChanges();
//Sum Total Budget in Project
var projectUpdate = db.Projects.Find(entity.ProjectId);
var totalBudget = projectUpdate.TotalBudget ?? 0;
projectUpdate.TotalBudget = (entity.TotalBudget ?? 0) + totalBudget;
db.SaveChanges();
return true;
}
catch (Exception ex)
{
//logging
return false;
}
}
ActivityController:
public ActionResult Edit(Activity activity)
{
try
{
if (ModelState.IsValid)
{
var dao = new ActivityDao();
var result = dao.Update(activity);
if (result)
{
SetAlert("Updated successfully!", "success");
return RedirectToAction("Index", "Activity");
}
else
{
ModelState.AddModelError("", "Updated unsuccessfully!");
}
}
SetViewBag(activity.ActivityGroupId);
SetViewBag(activity.ActivityId);
SetViewBag(activity.ProjectId);
SetViewBag(activity.ContractorId);
SetViewBag(activity.UserInCharge);
return View(activity);
}
catch
{
return View("Index");
}
}
Золото - это когда я сохраняю / обновляю активность, если Activity.TotalBudget не равен NULL, тогда выполните:
- Поиск проектов имеет аналогичный ProjectId как ProjectId в db.Activites
- Projects.TotalBudget = ** текущий ** Projects.TotalBudget + Activities.TotalBudget
- SaveChanges для db.Projects
Кажется, с кодами выше, это только сохранение / обновление действий и делать 1 и 2, а не 3, как я ожидал. Эта проблема заняла у меня один день, и я также тщательно искал похожий вопрос, но не смог найти ни одного. Поэтому я разместил это здесь, надеюсь, некоторые из вас, ребята, могут помочь. Спасибо ^^