OK, więc pojawia się ten błąd,
ForeignKeyReferenceAlreadyHasValueException
Link mówi o tym,
Reprezentuje błędy, które pojawiają się podczas próby zmiany klucza obcego, gdy jednostka jest już załadowana.
Myślę, że to, co musisz zrobić, to załadować zamówienie, o którym mówisz, i będzie miało z nim powiązaną listę szczegółów zamówienia. Jeśli chcesz usunąć jedno z tych odniesień, musisz usunąć szczegóły zamówienia z listy szczegółów zamówienia.
Myślę, że musisz zrobić coś takiego,
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();
}
Wypróbuj bez InsertOnSubmit, ale nadal zachowaj SubmitChanges. Proponuję, ponieważ już dodajesz rekord, ustawiając to,
order.OrderDetails.Add(orderDetail);
Więc prawdopodobnie nie musisz go ponownie wstawiać.