【问题标题】:How to save session values of shopping cart in database using asp.net + MVC如何使用asp.net + MVC将购物车的会话值保存在数据库中
【发布时间】:2016-03-28 22:25:45
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我建议您考虑使用对象关系映射工具:

    1. NHibernate(使用 FluentNHibernate)
    2. 实体框架

    每个工具都有大量的文档资源。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 非常感谢您的洞察力,就像购物车会话被保存在这行代码“var cart = (List)Session["cart"];”中。但是我可以使用这个“var cart”将它实际保存到数据库中吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2015-01-26
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多