同様に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; }
}