Я хочу иметь возможность использовать запрос
select * from cart
и сохраните это в списке. В моем классе CartItem я определил атрибуты id, имени, количества и общей цены
Теперь я хочу сохранить его в сеансе, чтобы пользователь вошел в корзину. его предыдущие элементы корзины должны быть загружены с помощью SQL-запроса и сохранены в сеансе.
Сейчас у меня есть следующий код, но он не загружает предыдущую корзину покупателя из базы данных.
Ошибка, которую я делал, была загрузка корзины из базы данных 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"];
}
}
Это мой класс корзины, в котором содержится товар, добавленный в корзину.
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
}