在关于购物车订单完成阶段的Microsoft音乐商店教程之后,我遇到了一些问题,更具体地说,我认为我有实体框架问题,我正在努力找出问题所在,请参考指南。
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-8
我的问题,在我在数据库中创建订单后,工作正常,然后解决方案尝试创建一个也正常工作的OrderDetail实体,但是当一切都运行完毕后,Order没有链接到OrderDetail,OrderDetail部分仍然无效,所以我无法在以后迭代订单中的项目,我的模型如下。
Order.cs
public partial class Order
{
public int OrderId { get; set; }
public string Username { get; set; }
public string Email { get; set; }
public decimal Total { get; set; }
public System.DateTime OrderDate { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
OrderDetail.cs
public class OrderDetail
{
public int OrderDetailId { get; set; }
public int OrderId { get; set; }
public int MenuItemId { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public virtual MenuItem MenuItem { get; set; }
public virtual Order Order { get; set; }
}
MenuItem.cs
public class MenuItem
{
public int MenuItemId { get; set; }
[Required]
public int MenuCategoryID { get; set; }
[Required]
[StringLength(30)]
public string Name { get; set; }
[Display(Name="Description")]
public string Description { get; set; }
[Display(Name="Image URL")]
[DataType(DataType.ImageUrl)]
public string ImageURL { get; set; }
[Required]
[Display(Name="Price")]
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:c}")]
public decimal Price { get; set; }
public int Order { get; set; }
public bool Visible { get; set; }
}
创建OrderDetail并将其存储在数据库中的basket方法..
public int CreateOrder(Order order)
{
decimal orderTotal = 0;
var cartItems = GetCartItems();
foreach (var item in cartItems)
{
var orderDetail = new OrderDetail
{
MenuItemId = item.MenuItemId,
OrderId = order.OrderId,
UnitPrice = item.MenuItem.Price,
Quantity = item.Count
};
// Set the order total of the shopping cart
orderTotal += (item.Count * item.MenuItem.Price);
db.OrderDetails.Add(orderDetail);
}
// 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;
}
除了Order和OrderDetails之间的关联时,一切正常,当查看订单时OrderDetails键应该包含OrderDetails类型列表时为空。
请允许有人提供一些建议,因为我想要解决这个问题。
我已经尝试过使用[ForeignKey]注释和[Key],但这些都无法解决我的问题。