Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Link to SQL ForeignKeyReferenceAlreadyHasValueException

Добре, значи получавате тази грешка,

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

ForeignKeyReferenceAlreadyHasValueException

И връзката казва това за това,

Представлява грешки, които възникват, когато се направи опит за промяна на външен ключ, когато обектът вече е зареден.

Мисля, че това, което трябва да направите, е да заредите поръчката, за която говорите, и тя ще има списък с OrderDetails, свързан с нея. Ако искате да премахнете една от тези препратки, трябва да премахнете OrderDetail от списъка OrderDetails.

Мисля, че трябва да направите нещо подобно,

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

Опитайте го без InsertOnSubmit, но все пак запазете SubmitChanges. Предлагам това, тъй като вече добавяте записа, като зададете това,

order.OrderDetails.Add(orderDetail);

Така че вероятно няма нужда да го вмъквате отново.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете няколко реда в една колона

  2. Когато не е посочено „Поръчай по“, какъв ред избира заявката за вашия набор от записи?

  3. Преобразуване на „01-Sep-2017“ в „01/09/2017“ в T-SQL?

  4. Възстановяване на база данни от .mdf и .ldf файлове на SQL Server 2008

  5. Върнете нарастващата стойност на колона за идентичност в SQL Server