OK, så du får det här felet,
ForeignKeyReferenceAlreadyHasValueException
Och länken säger detta om det,
Representerar fel som uppstår när ett försök görs att ändra en främmande nyckel när enheten redan är laddad.
Jag tror att det du behöver göra är att ladda beställningen som du pratar om, och den kommer att ha en lista med OrderDetails associerad med den. Om du vill ta bort en av dessa referenser måste du ta bort OrderDetail från OrderDetails-listan.
Jag tror att du måste göra något liknande,
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();
}
Prova utan InsertOnSubmit, men behåll fortfarande SubmitChanges. Jag föreslår det eftersom du redan lägger till posten genom att ställa in detta,
order.OrderDetails.Add(orderDetail);
Så du behöver förmodligen inte sätta in den igen.