INSERT statement conflicted with FOREIGN KEY

Написал сайт на ASP.NET по видеоурокам Гоши Дударя, и столкнулся с ошибкой следующего вида: SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_OrderDetail_Order_orderId". The conflict occurred in database "Shop", table "dbo.Order", column 'id'. В коде ошибок нету, только вызывается это исключение во время оформления заказа

Ошибка

Код:

using Shop.Data.Interfaces;
using Shop.Data.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Shop.Data.Repository
{
    public class OrdersRepository : IAllOrders
    {
        private readonly AppDBContent appDBContent;
        private readonly ShopCart shopCart;

        public OrdersRepository(AppDBContent appDBContent, ShopCart shopCart)
        {
            this.appDBContent = appDBContent;
            this.shopCart = shopCart;
        }
        public void createOrder(Order order)
        {
            order.orderTime = DateTime.Now;
            appDBContent.Order.Add(order);

            var items = shopCart.listShopItems;

            foreach(var el in items)
            {
                var orderDetail = new OrderDetail()
                {
                    carId = el.car.id,
                    orderId = order.id,
                    price = el.car.price
                };
                appDBContent.OrderDetail.Add(orderDetail);
            }
            appDBContent.SaveChanges();
        }
    }
}

Модель Order:

using Microsoft.AspNetCore.Mvc.ModelBinding;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace Shop.Data.Models
{
    public class Order
    {
        [BindNever]
        public int id { get; set; }
        [Display(Name="Введіть ім'я")]
        [StringLength(20)]
        [Required(ErrorMessage = "Довжина ім'я не менше 20 символів")]
        public string name { get; set; }
        [Display(Name = "Введіть прізвище")]
        [StringLength(20)]
        [Required(ErrorMessage = "Довжина прізвища не менше 20 символів")]
        public string surname { get; set; }
        [Display(Name = "Введіть адресу")]
        [StringLength(20)]
        [Required(ErrorMessage = "Довжина адреси не менше 20 символів")]
        public string address { get; set; }
        [Display(Name = "Введіть телефон")]
        [DataType(DataType.PhoneNumber)]
        [StringLength(10)]
        [Required(ErrorMessage = "Довжина телефона не менше 10 символів")]
        public string phone { get; set; }
        [Display(Name = "Введіть електронну пошту")]
        [DataType(DataType.EmailAddress)]
        [StringLength(30)]
        [Required(ErrorMessage = "Довжина електронної пошти не менше 30 символів")]
        public string email { get; set; }
        [BindNever]
        [ScaffoldColumn(false)]
        public DateTime orderTime { get; set; }
        public List<OrderDetail> orderDetails { get; set; }
    }
}

Модель OrderDetail:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Shop.Data.Models
{
    public class OrderDetail
    {
        public int id { get; set; }
        public int orderId { get; set; }
        public int carId { get; set; }
        public uint price { get; set; }
        public virtual Car car { get; set; }
        public virtual Order order { get; set; }
    }
}

Ответы (3 шт):

Автор решения: Simon Osipov

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_OrderDetail_Order_orderId"

Значит, что у вас проблема с ключем на order_id. Скорее всего, вы пытаетесь вставить запись с таким order_id, которого не существует. Поэтому FK не на что ссылаться.

→ Ссылка
Автор решения: Koxpit

Вставь appDBContent.SaveChanges() после строки "appDBContent.Order.Add(order);". Здесь пояснение: https://coderoad.ru/29058840/ASP-NET-оператор-insert-конфликтует-с-ограничением-внешнего-ключа

→ Ссылка
Автор решения: Nikita

В OrderRepository в методе CreateOrder нужно добавить appDBContent.SaveChanges(); после appDBContent.Order.Add(order);

→ Ссылка