OK, vous obtenez donc cette erreur,
ForeignKeyReferenceAlreadyHasValueException
Et le lien dit ceci à ce sujet,
Représente les erreurs qui se produisent lors d'une tentative de modification d'une clé étrangère alors que l'entité est déjà chargée.
Je pense que ce que vous devez faire est de charger la commande dont vous parlez, et une liste de détails de commande lui sera associée. Si vous souhaitez supprimer l'une de ces références, vous devez supprimer OrderDetail de la liste OrderDetails.
Je pense que vous devez faire quelque chose comme ça,
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();
}
Essayez-le sans InsertOnSubmit, mais conservez toujours les SubmitChanges. Je suggère que parce que vous ajoutez déjà l'enregistrement en définissant ceci,
order.OrderDetails.Add(orderDetail);
Vous n'aurez donc probablement pas besoin de l'insérer à nouveau.