1

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

create 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; }
}

ここに製品があります

 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; }
}
4

1 に答える 1

0

OrderDetailsでFKを設定しませんでした。

それは私が以前にエラーを起こしたものです。

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

于 2012-04-17T07:59:18.700 に答える