OK, vậy là bạn đang gặp lỗi này,
ForeignKeyReferenceAlreadyHasValueException
Và liên kết nói lên điều này về nó,
Đại diện cho các lỗi xảy ra khi cố gắng thay đổi khóa ngoại khi đối tượng đã được tải.
Tôi nghĩ những gì bạn cần làm là tải Order mà bạn đang nói đến, và nó sẽ có một danh sách OrderDetails được liên kết với nó. Nếu bạn muốn xóa một trong những tham chiếu đó, bạn cần xóa OrderDetail khỏi danh sách OrderDetails.
Tôi nghĩ bạn cần phải làm điều gì đó như thế này,
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();
}
Hãy thử nó mà không cần InsertOnSubmit, nhưng vẫn giữ các SubmitChanges. Tôi đề nghị điều đó vì bạn đã thêm bản ghi bằng cách thiết lập điều này,
order.OrderDetails.Add(orderDetail);
Vì vậy, bạn có thể không cần phải chèn lại.