MVC3 如何更新多个项目的库存

本文关键字:项目 何更新 更新 MVC3 | 更新日期: 2023-09-27 18:31:29

我正在按照本教程 http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-9

(与此不完全相同)

我正试图控制股票。

创建订单时,我想扣除库存量(库存 - 数量(数量));

我有3张桌子;订单、订单详情和产品。

创建订单明细列表后,我想修改产品的库存。

我不知道如何修改库存?我可以像'db一样使用吗?OrderDetails.Add(orderDetail)'?

你能帮我吗?我正在给你一些编码。

请指教我。谢谢!

public int CreateOrder(Order order)
    {
        decimal orderTotal = 0;
        var cartItems = GetCartItems();
        // Iterate over the items in the cart, adding the order details for each
        foreach (var item in cartItems)
        {
            var orderDetail = new OrderDetails
            {
                productId = item.productId,
                orderId = order.orderId,
                unitPrice = item.priceValue,
                rentalPeriod = item.rentalPeriod,
                startDate = item.dateCreated.AddDays(2),
                endDate = item.dateCreated.AddDays(2 + item.rentalPeriod),
                quantity = item.count
            };

            var productStock = new Product
            {   //Is it right coding??
                stock = item.Product.stock - item.count
            };
            // Set the order total of the shopping cart
            orderTotal += (item.count * item.priceValue);
            //Could be we need some coding here for stock control.
            db.OrderDetails.Add(orderDetail);
            db.SaveChanges();
        }
        // Set the order's total to the orderTotal count
        order.total = orderTotal;
        // Save the order
        db.SaveChanges();
        // Empty the shopping cart
        EmptyCart();
        // Return the OrderId as the confirmation number
        return order.orderId;
    }

视图模型

public class ShoppingCartViewModel
{
    public List<Cart> CartItems { get; set; }
    public decimal CartTotal { get; set; }
}

订单详情

public class OrderDetails
{
    [Key] public int orderDetailId { get; set; }
    public int orderId { get; set; }
    public int productId { get; set; }
    public int quantity { get; set; }
    public decimal unitPrice { get; set; }
    public int rentalPeriod { get; set; }
    public DateTime startDate { get; set; }
    public DateTime endDate { get; set; }
    public virtual Product Product { get; set; }
    public virtual Order Order { get; set; }
}

次序

public class Order
{
    rentalDB db = new rentalDB();
    [Key] public int orderId { get; set; }
    public int customerId { get; set; }
    public decimal total { get; set; }
    public virtual Customer Customer { get; set; }
    public List<OrderDetails> OrderDetails { get; set; }
}

public class Cart
{
    [Key]
    public int recordId { get; set; }
    public string cartId { get; set; }
    public int productId { get; set; }
    public decimal priceValue { get; set; }
    public int count { get; set; }
    public int rentalPeriod { get; set; }
    public DateTime dateCreated { get; set; }
    public virtual Product Product { get; set; }
}

MVC3 如何更新多个项目的库存

此片段:

var productStock = new Product
        {   //Is it right coding??
            stock = item.Product.stock - item.count
        };
        // Set the order total of the shopping cart
        orderTotal += (item.count * item.priceValue);
        //Could be we need some coding here for stock control.
        db.OrderDetails.Add(orderDetail);
        db.SaveChanges();

要在创建新产品之前进行库存检查,您可能应该确保您还有一些剩余,如果没有,请做一些事情,如下所示:

if (item.Product.stock - item.Count <= 0) 
{
    //you're out of stock! do something about it here? 
}
else
{
    //do your code above to create the new Product
}

编辑:要调整该产品的库存,只需执行以下操作:

而不是这样做剪断:

var productStock = new Product
        {   //Is it right coding??
            stock = item.Product.stock - item.count
        };

将其更改为:

item.Product.stock = item.Product.stock - item.count;

这将从产品库存号中减去订购编号。然后,当您调用以下行(已在代码中执行此操作)时,更改将保存到数据库中:

db.SaveChanges();