sql >> Database >  >> RDS >> Sqlserver

Linq naar SQL ForeignKeyReferenceAlHasValueException

OK, je krijgt deze foutmelding,

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

ForeignKeyReferenceAlreadyHasValueException

En de link zegt er dit over,

Vertegenwoordigt fouten die optreden wanneer een poging wordt gedaan om een ​​externe sleutel te wijzigen terwijl de entiteit al is geladen.

Ik denk dat je de bestelling moet laden waar je het over hebt, en er zal een lijst met OrderDetails aan verbonden zijn. Als u een van die referenties wilt verwijderen, moet u de OrderDetail uit de OrderDetails-lijst verwijderen.

Ik denk dat je zoiets moet doen,

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

Probeer het zonder InsertOnSubmit, maar behoud de SubmitChanges. Ik stel voor dat, omdat je het record al toevoegt door dit in te stellen,

order.OrderDetails.Add(orderDetail);

U hoeft het dus waarschijnlijk niet opnieuw in te voeren.




  1. Transponeer één rij in meerdere rijen Oracle

  2. poortnummer van SQL Server

  3. Hoe u een lijst met alle controlebeperkingen in de SQL Server-database kunt krijgen - SQL Server / TSQL-zelfstudie, deel 85

  4. Exporteer MySQL-gegevens naar Excel in PHP