2010-07-12 42 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控制器模型。