2010-07-12 41 views
0

是否有可能使用LINQ2SQL作爲MVC模型並綁定? - 由於L2S「附帶」問題真的很棒。作爲模型的ASP.NET MVC LINQ-2-SQL - 如何更新?

[HttpPost] 
    public ActionResult Save(ItemCart edCart) 
    { 
    using (DataContext DB = new DataContext()) 
    { 
    DB.Carts.Attach(edCart); 
    DB.Carts.Context.Refresh(RefreshMode.KeepChanges, edCart); 
    DB.Carts.Context.SubmitChanges(); 
    DB.SubmitChanges(); 
    } 
    return RedirectToAction("Index"); 
    } 

這是行不通的。 :S

+0

LINQ-to-SQL不再處於開發階段,請考慮實體框架。 – 2010-07-12 14:13:12

+0

實踐依然如此,也是一個問題。 它不再獲得新功能,但它仍然是支持的技術。 – BuzzBubba 2010-07-12 15:43:14

回答

0

您的保存視圖看起來像什麼?

你不能只是像這樣附加一個新的項目到EntitySet。 - >附加需要很多檢查,實施起來真的很痛苦。我自己嘗試過,根本不喜歡它。

在你[HttpPost]方法,需要更新模型,然後才能將其保存:

[HttpPost] 
public ActionResult Save(int id, ItemCart edCart) { 
    DataContext DB = new DataContext(); // I'm doing this without a using keyword for cleanliness 
    var originalCart = DB.Carts.SingleOrDefault(c => c.ID == id); // First you need to get the old database entry 

     if (ModelState.IsValid & TryUpdateModel(edCart, "Cart")) { // This is where the magic happens. 
      // Save New Instance 
      DB.SubmitChanges. 

      return RedirectToAction("Details", new { id = originalCart.ID }); 
     } else { 
      // Invalid - redisplay with errors 
      return View(edCart); 
     } 
    } 

它試圖更新使用他們「車」字頭valueprovider控制器模型。