2010-09-22 2 views
0

Я использую MVC 2 и EF 4.SaveChanges() для обновления не работает

Я пытаюсь обновить объект Application, используя свою собственную хранимую процедуру, но не обновляется. Я проверил 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); 
} 

Вот мой репозиторий метод Update:

private MyEntities db = new MyEntities(); 

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

Благодаря Brendan

ответ

0

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

событие Действие:

[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(); 
} 
Смежные вопросы