Добре, значи получавате тази грешка,
ForeignKeyReferenceAlreadyHasValueException
И връзката казва това за това,
Представлява грешки, които възникват, когато се направи опит за промяна на външен ключ, когато обектът вече е зареден.
Мисля, че това, което трябва да направите, е да заредите поръчката, за която говорите, и тя ще има списък с OrderDetails, свързан с нея. Ако искате да премахнете една от тези препратки, трябва да премахнете OrderDetail от списъка OrderDetails.
Мисля, че трябва да направите нещо подобно,
using (DataClasses1DataContext context = new DataClasses1DataContext())
{
Customer customer = context.Customers.Where(x => x.CustomerID == 1).Single();
Order order = new Order();
// set some order fields here
customer.Orders.Add(order);
OrderDetail orderDetail = new OrderDetail();
order.OrderDetails.Add(orderDetail);
orderDetail.Product = context.Products.Where(x => x.ProductID == 2).Single();
orderDetail.ProductID = orderDetail.Product.ProductID;
context.SubmitChanges();
}
Опитайте го без InsertOnSubmit, но все пак запазете SubmitChanges. Предлагам това, тъй като вече добавяте записа, като зададете това,
order.OrderDetails.Add(orderDetail);
Така че вероятно няма нужда да го вмъквате отново.