sql >> Database teknologi >  >> RDS >> Sqlserver

Linq til SQL ForeignKeyReferenceAlreadyHasValueException

OK, så du får denne fejl,

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

ForeignKeyReferenceAlreadyHasValueException

Og linket siger dette om det,

Repræsenterer fejl, der opstår, når der gøres et forsøg på at ændre en fremmednøgle, når entiteten allerede er indlæst.

Jeg tror, ​​hvad du skal gøre, er at indlæse den ordre, du taler om, og den vil have en liste over ordredetaljer tilknyttet. Hvis du vil fjerne en af ​​disse referencer, skal du fjerne OrderDetail fra OrderDetails-listen.

Jeg tror, ​​du skal gøre sådan noget,

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

Prøv det uden InsertOnSubmit, men behold SubmitChanges. Jeg foreslår det, fordi du allerede tilføjer posten ved at indstille dette,

order.OrderDetails.Add(orderDetail);

Så du behøver sandsynligvis ikke at indsætte den igen.




  1. Vil du inkludere overskrifter, når du bruger SELECT INTO OUTFILE?

  2. Hvordan kan jeg lave en sammenhængende gruppe i MySQL?

  3. Konfigurer JPA/Hibernate/PostgreSQL uden XML

  4. Tjek, om Tomcat og MySQL allerede er installeret på maskinen