【问题标题】:SaveChanges() to update is not workingSaveChanges() 更新不起作用
【发布时间】:2010-09-22 19:38:31
【问题描述】:

我正在使用 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();
}

谢谢 布伦丹

【问题讨论】:

    标签: asp.net-mvc-2 entity-framework-4


    【解决方案1】:

    这是我的更改,不确定是否正确,但可以正常工作。

    动作事件:

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

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 2019-02-01
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多