sql >> Databáze >  >> RDS >> Sqlserver

Link to SQL ForeignKeyReferenceAlreadyHasValueException

OK, takže se vám zobrazuje tato chyba,

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

ForeignKeyReferenceAlreadyHasValueException

A odkaz o tom říká toto,

Představuje chyby, ke kterým dochází při pokusu o změnu cizího klíče, když je entita již načtena.

Myslím, že to, co musíte udělat, je načíst objednávku, o které mluvíte, a bude s ní spojen seznam podrobností o objednávce. Pokud chcete odstranit jednu z těchto referencí, musíte odstranit OrderDetail ze seznamu OrderDetails.

Myslím, že musíte udělat něco takového,

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

Zkuste to bez InsertOnSubmit, ale přesto si ponechte SubmitChanges. Navrhuji to, protože záznam již přidáváte nastavením tohoto,

order.OrderDetails.Add(orderDetail);

Pravděpodobně jej tedy nebudete muset vkládat znovu.




  1. Jak získat údaje o prodeji za poslední 3 měsíce v MySQL

  2. LOWER() – Převod na malá písmena v PostgreSQL

  3. výjimka hodnoty null při vstupu do databáze

  4. Příklady vztahů mnoho k mnoha