2016-03-28 77 views
-1

在數據庫中保存購物車的會話值因此,這是我添加到購物車的代碼。現在我希望將會話對象保存在數據庫中。有人可以向我解釋我應該如何處理它如何使用asp.net + MVC

public ActionResult Cart(int id) 
    { 
     if (Session["cart"] == null) 
     { 
      var cart = new List<Item>();    
      cart.Add(new Item(_productService.GetProductById(id), 1)); 
      Session["cart"] = cart; 
     } 
     else 
     { 
      var cart = (List<Item>)Session["cart"]; 
      int index = isExisting(id); 
      if (index == -1) 
      { 
       cart.Add(new Item(_productService.GetProductById(id), 1)); 
      } 
      else 
      { 
       cart[index].Quantity++; 
      } 
      Session["cart"] = cart; 
     } 
     var userModel = new UserViewModel(true, null, null); 
     return View(userModel); 
    } 

回答

0

有幾種方法可以通過ASP.NET將數據保存到數據庫。

我建議你考慮使用一個對象關係映射工具:

  1. NHibernate的(與FluentNHibernate)
  2. 的EntityFramework

有文獻資源,爲這些工具過多。

你也可以使用ADO.NET,但是這是不推薦的,除非你絕對必須使用它。

0

我處理這個確切的情況。一種選擇是將您的購物車序列化爲XML並將XML存儲在數據庫列中。如果您不希望您需要查詢對象的具體內容,那麼這種方法非常有用 - 您只需保存並恢復它,這就是您使用Session進行的操作。 不利的一面是,如果修改組成購物車的類或類,則可能會失去一些向後兼容性。

+0

非常感謝您的洞察力,就像在購物車會話中正在保存的這行代碼一樣「var cart =(List )Session [」cart「];」。但是,我可以使用這個「var cart」實際上將它保存到數據庫中。 – Jay