OK, takže se vám zobrazuje tato chyba,
ForeignKeyReferenceAlreadyHasValueException
A odkaz o tom říká toto,
Představuje chyby, ke kterým dochází při pokusu o změnu cizího klíče, když je entita již načtena.
Myslím, že to, co musíte udělat, je načíst objednávku, o které mluvíte, a bude s ní spojen seznam podrobností o objednávce. Pokud chcete odstranit jednu z těchto referencí, musíte odstranit OrderDetail ze seznamu OrderDetails.
Myslím, že musíte udělat něco takového,
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();
}
Zkuste to bez InsertOnSubmit, ale přesto si ponechte SubmitChanges. Navrhuji to, protože záznam již přidáváte nastavením tohoto,
order.OrderDetails.Add(orderDetail);
Pravděpodobně jej tedy nebudete muset vkládat znovu.