MVC5:“TryUpdateModel”

时间:2015-07-25 17:30:02

标签: asp.net-mvc entity-framework

我正在尝试使用TryUpdateModel来限制编辑方法更新的属性。

我希望用户查看“编辑”表单中的所有字段,但不希望更新“影集”实体的“标题”属性。所以我这样做:

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit()
        {
            var album = new Album();
            TryUpdateModel(album, new[] { "Price","Date","Genre"});
            if (ModelState.IsValid)
            {
                db.Entry(album).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }.....

执行此代码时,我在db.SaveChages()上出错,其中说:

  

存储更新,插入或删除语句会影响意外   行数(0)。自那以后,实体可能已被修改或删除   实体已加载。看到   http://go.microsoft.com/fwlink/?LinkId=472540了解有关的信息   理解和处理乐观并发异常。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

基本上,它说你的更新修改了0行。因此,您的主键(无论使行唯一)指向数据库中不存在的ID。您需要弄清楚为什么会发生这种情况,而是使用数据库中存在的密钥。