2016-03-28 36 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