SaveChanges () для обновления не работает - PullRequest
0 голосов
/ 22 сентября 2010

Я использую MVC 2 и EF 4.

Я пытаюсь обновить сущность приложения, используя собственную хранимую процедуру, но она не обновляется Я проверил SQL Profiler, и он даже не достигает базы данных. Я также использую хранимую процедуру вставки, и она отлично работает. Обе хранимые процедуры (вставка и обновление) отображаются правильно. Кто-нибудь знает, что я делаю не так?

Вот мое событие действия EditApplication:

[HttpPost]
public ActionResult EditApplication(int id, ApplicationViewModel applicationViewModel)
{
   if (ModelState.IsValid)
   {
      try
      {
         Mapper.CreateMap<ApplicationViewModel, Application>();
         var application = (Application)Mapper.Map(applicationViewModel, typeof(ApplicationViewModel), typeof(Application));
         application.ApplicationID = id;

         UpdateModel(application);

         // Edit application
         applicationRepository.UpdateApplication(application);

         // If success, redirect to confirmation page
         return RedirectToAction("Confirmation", new { id = application.ApplicationID });
      }
      catch (Exception ex)
      {
         // TODO
      }
   }

   applicationViewModel.AccountTypes = accountTypeRepository.GetAccountTypes();
   return View("CreateApplication", applicationViewModel);
}

Вот мой метод обновления хранилища:

private MyEntities db = new MyEntities();

public void UpdateApplication(Application application)
{
   db.SaveChanges();
}

Спасибо Брендан

1 Ответ

0 голосов
/ 22 сентября 2010

Это мои изменения, не уверен, что это правильно, но работает.

Событие действия:

[HttpPost]
public ActionResult EditApplication(int id, ApplicationViewModel applicationViewModel)
{
   var application = applicationRepository.GetApplicationByID(id);

   if (ModelState.IsValid)
   {
      try
      {
         Mapper.CreateMap<ApplicationViewModel, Application>();
         application = (Application)Mapper.Map(applicationViewModel, typeof(ApplicationViewModel), typeof(Application));

         application.ApplicationStateID = 1;
         application.ApplicationID = id;

         // Edit application
         applicationRepository.UpdateApplication(application);

         // If success, redirect to confirmation page
         return RedirectToAction("Confirmation", new { id = application.ApplicationID });
      }
      catch (Exception ex)
      {
         // TODO
      }
   }

   applicationViewModel.AccountTypes = accountTypeRepository.GetAccountTypes();
   return View("CreateApplication", applicationViewModel);
}

Метод обновления в моем хранилище:

private MyEntities context = new MyEntities();

public void UpdateApplication(Application application)
{
   context.Applications.ApplyCurrentValues(application);
   context.SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...