2010-09-22 6 views
0

J'utilise MVC 2 et 4. EFSaveChanges() mise à jour ne fonctionne pas

Je suis en train de mettre à jour mon entité Application utilisant ma propre procédure stockée, mais il n'est pas mise à jour. J'ai vérifié SQL Profiler et il n'atteint même pas la base de données. J'utilise également une procédure stockée d'insertion et cela fonctionne très bien. Les deux procédures stockées (insertion et mise à jour) sont mappées correctement. Est-ce que quelqu'un sait ce que je fais mal?

Voici mon événement d'action 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); 
} 

Voici mon dépôt méthode de mise à jour:

private MyEntities db = new MyEntities(); 

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

Merci Brendan

Répondre

0

Ce mes changements, pas sûr si elle est correcte, mais ça fonctionne.

événement d'action:

[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); 
} 

La méthode de mise à jour dans mon dépôt:

private MyEntities context = new MyEntities(); 

public void UpdateApplication(Application application) 
{ 
    context.Applications.ApplyCurrentValues(application); 
    context.SaveChanges(); 
} 
Questions connexes