2012-04-17 21 views
1

同様にMVCミュージックストアをフォローしています。 http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-9MVC3 db.SaveChanges()INSERT文エラー

私がorderDetailsを作成しているとき、内部例外でエラーが発生しました。

私は何を意味するのか教えてください。

"INSERTステートメントがFOREIGN KEY制約\" FK_OrderDetails_Product \ "と競合しました。データベース\" rentalDB \ "、テーブル\" dbo.Product \ "、" productId "列で競合が発生しました。\ r \ n終了しました。

SQL Serverをチェックインする必要はありますか?私はなぜそれが起こるのか分からない。

あなたは私にいくつかアドバイスを与えることができますか?私はあなたに私のコードを与えている。

私を助けてください。ありがとう。ここで

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.Product.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 
      }; 

      // Set the order total of the shopping cart 
      orderTotal += (item.count * item.priceValue); 

      db.OrderDetails.Add(orderDetail); 

     } 

     // Set the order's total to the orderTotal count 
     order.total = orderTotal; 

     // Save the order 
     db.SaveChanges(); //I have error in here!!! 

     // Empty the shopping cart 
     EmptyCart(); 

     // Return the OrderId as the confirmation number 
     return order.orderId; 
    } 

は、ここでのViewModel

public class ShoppingCartViewModel 
{ 
    public List<Cart> CartItems { get; set; } 
    public decimal CartTotal { 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; } 
} 

である私がしたOrderDetailsでFKを設定していない製品

public class Product 
{ 
    [Key] public int productId { get; set; } 

    [Required(ErrorMessage = "Please select category")] 
    public int categoryId { get; set; } 

    [Required(ErrorMessage = "Please fill in model name")] 
    [DisplayName("Model name")] 
    public String model { get; set; } 

    [DisplayName("Description")] 
    public String description { get; set; } 

    [DisplayName("Original price")] 
    public decimal price { get; set; } 

    [Required(ErrorMessage = "Please fill in stock of product")] 
    [DisplayName("Stock")] 
    public int stock { get; set; } 
    public virtual Category Category { get; set; } 
} 

答えて

0

..

です210

これは私が前にエラーを持っているものです。

OrderDetailsとOrderの間にFKを作成すると機能します。

関連する問題