У меня очень сложный код. Я разрабатываю веб-приложение для многих ресторанов, где люди могут делать заказы онлайн. У меня есть две таблицы и модели для Order
, который содержит информацию о User
, и OrderDetails
, который имеет MenuItems
. Я создал ShoppingCartController
с действием ProcessOrder
public ActionResult ProcessOrder(FormCollection frc)
{
List<Cart> lstCart = (List<Cart>)Session[strCart];
Order order = new Order()
{
Name = frc["Name"],
UserId = User.Identity.GetUserId(),
OrderTime = DateTimeOffset.UtcNow,
PaymentType = "Cash",
Status = "Processing"
};
db.Orders.Add(order);
db.SaveChanges();
foreach (Cart cart in lstCart)
{
OrderDetail orderDetail = new OrderDetail()
{
OrderId = order.Id,
MenuId = cart.Menu.Id,
Quantity = cart.Quantity,
Price = cart.Menu.Price,
RestaurantId = cart.Menu.RestaurantId
};
db.OrderDetails.Add(orderDetail);
db.SaveChanges();
}
Session.Remove(strCart);
return View("OrderSuccess");
}
Также я создал OrderController
для отображения списка заказов:
public ActionResult Index(int? restaurantId = null)
{
var orders = db.Orders.Include(o => o.User)
.Include(p => p.OrderDetails)
.OrderByDescending(x => x.Id);
return View(orders.ToList());
}
Здесь я только что добавил restaurantId
параметр.
А теперь я хочу отображать заказы по RestaurantId
. Я думал о том, чтобы взять RestaurantId
из OrderDetails->Menu->RestaurantId
, но я не думаю, что это работает, потому что OrderDetails
каждого заказа может иметь много RestaurantId
.
Должен ли я добавить RestaurantId
столбец в таблицу Order
? Можете ли вы предложить подход?