Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Linq to SQL ForeignKeyReferenceAlreadyHasValueException

OK, vậy là bạn đang gặp lỗi này,

http://msdn.microsoft.com/vi -us / library / system.data.linq.foreignkeyreferencealreadyhasvalueexception.aspx

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL Shred XML - Làm việc với không gian tên

  2. Cách chỉnh sửa đặc tả danh tính trong SQL Server 2008

  3. Cần truy vấn để liên hệ cha mẹ duy nhất với con không phải là duy nhất nhưng có thể là duy nhất với MAX

  4. Hợp nhất nhiều cột trong một, duy trì sự giống nhau và thay thế sự khác biệt

  5. Nulls và câu lệnh MERGE:Tôi cần đặt giá trị thành vô cùng. Làm sao?