C# 是否加载SQL查询的结果集并将其保存到ASP.NET中的会话?
我希望能够使用查询C# 是否加载SQL查询的结果集并将其保存到ASP.NET中的会话?,c#,asp.net,sql,session,shopping-cart,C#,Asp.net,Sql,Session,Shopping Cart,我希望能够使用查询 select * from cart 并将其保存在列表中。在我的CartItem类中,我定义了id、name、quantity和totalprice的属性 现在我想把它保存在一个会话中,这样当用户登录购物车时。他以前的购物车项目应该通过sql查询加载并保存到会话中 public class ShoppingCart { #region ListCart public static String cid; public List<Car
select * from cart
并将其保存在列表中。在我的CartItem类中,我定义了id、name、quantity和totalprice的属性
现在我想把它保存在一个会话中,这样当用户登录购物车时。他以前的购物车项目应该通过sql查询加载并保存到会话中
public class ShoppingCart
{
#region ListCart
public static String cid;
public List<CartItem> Items { get; private set; }
public static SqlConnection conn = new SqlConnection(connStr.connString);
#endregion
#region CartSession
public static readonly ShoppingCart Instance;
static ShoppingCart()
{
if (HttpContext.Current.Session["ASPNETShoppingCart"] == null)
{
Instance = new ShoppingCart();
Instance.Items = new List<CartItem>();
HttpContext.Current.Session["ASPNETShoppingCart"] = Instance;
}
else
{
Instance = (ShoppingCart)HttpContext.Current.Session["ASPNETShoppingCart"];
}
}
现在我有以下代码,但它没有从数据库加载客户的前一个购物车
我犯的错误是每次客户单击查看购物车时都从sql数据库加载购物车。这是错误的。我应该把它放在一个会议上
public class ShoppingCart
{
#region ListCart
public static String cid;
public List<CartItem> Items { get; private set; }
public static SqlConnection conn = new SqlConnection(connStr.connString);
#endregion
#region CartSession
public static readonly ShoppingCart Instance;
static ShoppingCart()
{
if (HttpContext.Current.Session["ASPNETShoppingCart"] == null)
{
Instance = new ShoppingCart();
Instance.Items = new List<CartItem>();
HttpContext.Current.Session["ASPNETShoppingCart"] = Instance;
}
else
{
Instance = (ShoppingCart)HttpContext.Current.Session["ASPNETShoppingCart"];
}
}
公共类购物车
{
#区域列表车
公共静态字符串cid;
公共列表项{get;private set;}
public static SqlConnection conn=新的SqlConnection(connStr.connString);
#端区
#区域会议
公共静态只读ShoppingCart实例;
静态ShoppingCart()
{
if(HttpContext.Current.Session[“ASPNETShoppingCart”]==null)
{
实例=新ShoppingCart();
Instance.Items=newlist();
HttpContext.Current.Session[“ASPNETShoppingCart”]=实例;
}
其他的
{
Instance=(ShoppingCart)HttpContext.Current.Session[“ASPNETShoppingCart”];
}
}
这是我的购物车类,它保存添加到购物车中的产品
public class CartItem : IEquatable<CartItem>
{
#region Attributes
public int Quantity { get; set; }
public static SqlConnection conn = new SqlConnection(connStr.connString);
private int _productId;
public int ProductId
{
get { return _productId; }
set
{
_product = null;
_productId = value;
}
}
private Product _product = null;
public Product Prod
{
get
{
if (_product == null)
{
_product = new Product(ProductId);
}
return _product;
}
}
public string Name
{
get { return Prod.ProductName; }
}
public string Description
{
get { return Prod.Description; }
}
public float UnitPrice
{
get { return Prod.UnitPrice; }
}
public float TotalPrice
{
get { return UnitPrice * Quantity; }
}
#endregion
#region Methods
public CartItem(int productId)
{
this.ProductId = productId;
}
public bool Equals(CartItem item)
{
return item.ProductId == this.ProductId;
}
#endregion
}
公共类CartItem:IEquatable
{
#区域属性
公共整数数量{get;set;}
public static SqlConnection conn=新的SqlConnection(connStr.connString);
私有int_productId;
公共int ProductId
{
获取{return\u productId;}
设置
{
_product=null;
_productId=值;
}
}
私有产品_Product=null;
公共产品产品
{
得到
{
如果(_product==null)
{
_产品=新产品(产品ID);
}
退货产品;
}
}
公共字符串名
{
获取{return Prod.ProductName;}
}
公共字符串描述
{
获取{返回产品描述;}
}
公开浮动单价
{
获取{return Prod.UnitPrice;}
}
公开浮动总价格
{
获取{返回单价*数量;}
}
#端区
#区域方法
公共CartItem(int productId)
{
this.ProductId=ProductId;
}
公共布尔等于(CartItem)
{
return item.ProductId==this.ProductId;
}
#端区
}
我想我能猜出问题出在哪里,不同的用户使用同一个购物车
public static readonly ShoppingCart Instance;
此行声明了ShoppingCart
类的静态实例。在ASP.NET中,这意味着它的数据在应用程序之间共享。由于应用程序在服务器上运行,并且一次为多个用户提供服务,因此该实例在所有用户之间共享。如果有两个用户,则一个项目共享一次添加后,它将添加到每个人的购物车中,并且每次新用户出现时,购物车都将重置
因此,除非你有真正的应用程序范围的静态数据,否则不要在asp.net应用程序中使用静态数据。有很多代码,而不是一个特定的问题。我已经根据我猜你的问题给出了答案。如果我错了,请澄清。保留代码..这是为了详细信息L..主要问题是加载SQL查询的结果集并将其保存到Session@user478636:既然我显然想帮忙,但又不明白问题所在,那就帮我澄清一下好吗?你的问题到底在哪里?加载部分、保存部分、中间的某个部分?好吧,现在我设法将购物车加载到会话中..现在在会话中同步购物车和数据库中的购物车…你能给我推荐一个在asp.net中处理用户会话的好方法吗…通常我应该怎么做…因为客人可以向购物车添加物品…登录的用户也可以。