2011-12-21 30 views
0

我正在使用MVC 3 Framework構建一個網站。我有一個Linq to SQL DataContext來處理數據訪問。根據我所學到的,您可以使用post方法來獲取用戶提交表單和MVC製作時的表單信息可以將數據映射到模型對象。 是這樣的:如何通過將模型附加到DataContext來更新數據庫

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(Entity model) 

但我有這個模型對象附加到這裏的數據上下文對象的問題就是我正在做的事情:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(Entity model) 
    { 

     if(ModelState.IsValid) 
     { 
      _dataContext.Attach(model); 
      _dataContext.SubmitChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View("Edit", model); 
    } 

但沒有happens.What我做錯了什麼?

回答

0

問題是您的_dataContext不知道您的實體已被更改。 所以,你將不得不使用排字修改爲真實的overload

_dataContext.Attach(model, true); 
+0

我試過這種方法,但它說,實體應該有一個版本字段。 – Beatles1692 2011-12-21 12:23:57

+0

您是否'實體'具有[版本鍵](http://msdn.microsoft.com/zh-cn/library/bb386957.aspx)定義?另一種方法是從上下文中檢索原始實體,使用您的更改(來自'model')然後'SubmitChanges'更新它。 – 2011-12-21 12:28:15

+0

我嘗試了原來的方法。問題是:首先,我必須將原始版本加載到datacontext中,其次,當我嘗試附加更新後的版本時,它給了我一個錯誤,指出已經有一個對象具有相同的密鑰上下文(原始的) – Beatles1692 2011-12-21 12:36:10

相關問題