1

我想更新数据库中存在的多个对象并保存新对象,但它不工作?TryUpdateModel/UpdateModel不起作用?

这里是我的代码:

[HttpPost] 
    public ActionResult Edit(MasterModel Model) 
    { 
     DBEntities db = new DBEntities(); 
     var reloadView = true; 
     for(int i = 0 ;i< Model.Emails.Count(); i++) 
     { 
      if(Model.Emails[i].ID > 0) 
      { 
       var id = Model.Emails[i].ID; 
       var email = db.EMAIL.Single(e=> e.ID == id); 
       if(TryValidateModel(Model.Emails[i], "Emails[" +i.ToString() + "]")) 
       { 
        TryUpdateModel(email, "Emails[" + i.ToString() + "]"); 
        reloadView = false; 
       } 
       else 
       { 
        reloadView = true; 
       } 

      } 
      else 
      { 
       if(TryValidateModel(Model.Emails[i], "Emails[" + i.ToString() + "]")) 
       { 
        db.AddToEMAIL(Model.Emails[i]); 
        reloadView = false; 
       } 
       else 
       { 
        reloadView = true; 
       } 
      } 
     } 

     if(reloadView) 
     { 
      return View(Model); 
     } 
     else 
     { 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
    } 

如果TryUpdateModel后我做db.SaveChanges();我得到一个System.Data.UpdateException与参照完整性

而且,如果我让我的代码就像在这个例子中,它只是不更新​​! :S

噢,我也试过UpdateModel()。

有什么建议吗?

在此先感谢!

干杯

回答

0

通常的工作流程用于更新的对象是:

1)负载旧对象(使用ID) 2)更改属性 3)的SaveChanges

+0

谢谢您的回答,但它不对我的问题有任何积极的影响。如果你看我的代码即时通讯数据库更新模型,并保存更改。或者你看到我没有看到的东西? – Gyocol

+0

嗨我看到你的代码实现也插入(Model.Emails [i] .ID> 0),我不明白为什么如果你发布编辑操作。 – ADIMO