2011-08-10 21 views
1

我正在做MVC音樂商店教程,我已經完成了,每項工作都很好,但由於某種原因,當我在管理員帳戶上編輯相冊時,當我嘗試保存更改時出現此錯誤。它突出顯示db.SaveChanges();是什麼導致這個問題?MVC音樂商店保存併發性。這是什麼造成的?

存儲更新,插入或刪除語句影響了意外數量的行(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); 
    } 

我訪問我做了,因爲我只在我的機器上本地做網站的唯一的人,我已被告知,別人可能會改變些什麼,但事實並非如此。這是怎麼回事?

+1

嗨Jared,顯示您的代碼都來自Edit ActionResults –

+0

我已經添加了它,讓我知道如果你需要看到其他的代碼 – JaredH20

回答

6

此問題在musicstore codeplex站點的this頁面上進行了說明。

下面是一個摘錄:

在Album類,已經定義的[裝訂(排除=「ALBUMID」)]的類,這意味着代碼不會嘗試並結合ALBUMID從形式。這很好,除了在編輯頁面上,你傳入了一個人口稠密的相冊,這大概是使用綁定來填充的,當然這會忽略Album Id,所以傳遞給編輯方法的對象的AlbumI是總是爲0,這會引發誤導性的併發錯誤,因爲沒有行受影響,因爲沒有相冊ID爲0.

+0

再次感謝您的幫助:) – JaredH20

+0

沒有probs - 只是試圖提高我的答案與問題的比例。 –

+0

也有這個問題,謝謝解決 – MassStrike