Asp.net mvc 3 TryUpdateModel/UpdateModel不工作?

Asp.net mvc 3 TryUpdateModel/UpdateModel不工作?,asp.net-mvc-3,entity-framework,updatemodel,updateexception,Asp.net Mvc 3,Entity Framework,Updatemodel,Updateexception,我试图更新数据库中存在的多个对象并保存新对象,但它不起作用 这是我的密码: [HttpPost] public ActionResult Edit(MasterModel Model) { DBEntities db = new DBEntities(); var reloadView = true; for(int i = 0 ;i< Model.Emails.Count(); i++) {

我试图更新数据库中存在的多个对象并保存新对象,但它不起作用

这是我的密码:

    [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");
        }
    }
[HttpPost]
公共行动结果编辑(主模型)
{
DBEntities db=新的DBEntities();
var-reloadView=true;
对于(int i=0;i0)
{
var id=Model.Emails[i].id;
var email=db.email.Single(e=>e.ID==ID);
if(TryValidateModel(Model.Emails[i],“Emails[“+i.ToString()+”]))
{
TryUpdateModel(电子邮件,“Emails[“+i.ToString()+”]);
重载视图=false;
}
其他的
{
重载视图=真;
}
}
其他的
{
if(TryValidateModel(Model.Emails[i],“Emails[“+i.ToString()+”]))
{
db.AddToEMAIL(Model.Emails[i]);
重载视图=false;
}
其他的
{
重载视图=真;
}
}
}
如果(重新加载视图)
{
返回视图(模型);
}
其他的
{
db.SaveChanges();
返回操作(“索引”);
}
}
如果在TryUpdateModel之后我执行db.SaveChanges();我得到一个具有引用完整性的System.Data.UpdateException

如果我让我的代码如示例中所示,它就不会更新!:

哦,是的,我也尝试了UpdateModel()

有什么建议吗

提前谢谢


干杯

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

1) 加载旧对象(使用id) 2) 更改属性
3) 保存更改

谢谢你的回答,但这对我的问题没有任何积极影响。若你们看我的代码,我从db得到的,我更新模型,我保存更改。或者你看到了我没有看到的东西吗?嗨,我看到你的代码实现也插入了(Model.Emails[i].ID>0),我不明白为什么你发布了编辑操作。