Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Linq ke SQL ForeignKeyReferenceAlreadyHasValueException

Oke, jadi Anda mendapatkan kesalahan ini,

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

ForeignKeyReferenceAlreadyHasValueException

Dan tautannya mengatakan ini tentang itu,

Mewakili kesalahan yang terjadi saat upaya dilakukan untuk mengubah kunci asing saat entitas sudah dimuat.

Saya pikir apa yang perlu Anda lakukan adalah memuat Pesanan yang sedang Anda bicarakan, dan itu akan memiliki daftar Detail Pesanan yang terkait dengannya. Jika Anda ingin menghapus salah satu referensi tersebut, Anda harus menghapus OrderDetail dari daftar OrderDetails.

Saya pikir Anda perlu melakukan sesuatu seperti ini,

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();
}

Cobalah tanpa InsertOnSubmit, tetapi tetap pertahankan SubmitChanges. Saya menyarankan itu karena Anda sudah menambahkan catatan dengan mengatur ini,

order.OrderDetails.Add(orderDetail);

Jadi Anda mungkin tidak perlu memasukkannya lagi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencocokan fuzzy menggunakan T-SQL

  2. cara membuat dan memanggil fungsi skalar di sql server 2008

  3. Batasi akses Login SQL Server ke hanya satu database

  4. Sintaks untuk Nilai Default untuk Jenis Buatan Pengguna sebagai Tabel

  5. Validasi Email TSQL (tanpa ekspresi reguler)