如何使用asp.net + MVC保存数据库中购物车的会话值

时间:2016-03-28 22:25:46

标签: c# asp.net-mvc-4 ef-code-first

所以这是我添加到购物车的代码。现在我希望将会话对象保存在数据库中。有人可以向我解释我应该如何处理它

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);
    }

2 个答案:

答案 0 :(得分:0)

有几种方法可以通过ASP.NET将数据保存到数据库。

我建议您研究使用对象关系映射工具:

  1. NHibernate(使用FluentNHibernate)
  2. 的EntityFramework
  3. 每种工具都有大量的文档资源。

    您也可以使用ADO.NET,但除非您绝对必须使用它,否则不建议这样做。

答案 1 :(得分:0)

我处理这个确切的情况。一种选择是将购物车序列化为XML并将XML存储在数据库列中。如果您不希望您需要查询对象的细节,这种方法很有用 - 您只想保存并恢复它,这就是您在使用Session时所做的事情。 缺点是,如果修改构成购物车的类或类,则可能会失去一些向后兼容性。