MVC音乐商店保存并发.是什么造成的?

Jar*_*H20 1 asp.net asp.net-mvc

我正在做MVC音乐商店教程,我已经完成,每个工作都很好,但出于某种原因,当我在管理员帐户上编辑相册时,当我尝试保存更改时,它会出现此错误.它突出显示了db.SaveChanges(); 是什么导致了这个问题?

存储更新,插入或删除语句会影响意外的行数(0).自实体加载后,实体可能已被修改或删除.刷新ObjectStateManager条目.

    public ActionResult Edit(int id)
    {
        Album album = db.Albums.Find(id);
        ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
        ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
        return View(album);
    }

    //
    // POST: /StoreManager/Edit/5

    [HttpPost]
    public ActionResult Edit(Album album)
    {
        if (ModelState.IsValid)
        {
            db.Entry(album).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
        ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
        return View(album);
    }
Run Code Online (Sandbox Code Playgroud)

我是唯一一个访问我所做的网站的人,因为我只在我的机器上进行本地操作,我被告知其他人可能会改变一些东西但事实并非如此.这是怎么回事?

Nic*_*ray 6

此问题在musicstore codeplex网站的页面上进行了解释.

这是一段摘录:

在Album类中,您已经在类上定义了[Bind(Exclude ="AlbumId")],这意味着代码不会尝试从表单中绑定AlbumId.这很好,除了在编辑页面上,你传入一个填充的Album,大概是使用绑定填充,这当然忽略了Album Id,因此传递给edit方法的对象的AlbumId是始终为0,这会引发误导性的并发错误,因为没有行受到影响,因为没有ID为0的相册.