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; }
}
此片段:
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();