MVC音乐商店ASPNET MVC教程问题

时间:2014-08-10 13:05:27

标签: c# asp.net-mvc database frameworks entity

在关于购物车订单完成阶段的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],但这些都无法解决我的问题。

0 个答案:

没有答案