2010-07-12 2 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 больше не находится в разработке, рассмотрим Entity Framework. –

+0

Практика остается той же, и проблема также. Он больше не набирает новые функции, но поддерживается технология. – BuzzBubba

ответ

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 с помощью них префикс «Корзина».

Смежные вопросы