2017-11-27 15 views
0

2 개의 linq 쿼리가 있습니다. 유일한 쿼리로 인해 첫 번째 쿼리는 아무 것도 수행하지 않으며 OK입니다. 그러나 두 번째 레코드는 레코드를 추가하는 동안 아무 것도 수행하지 않습니다. 내가 첫 번째 쿼리를 무시하면 두 번째 쿼리가 작동합니다. 엔터티를 새로 고쳐야합니까? 어떻게?두 번째 엔터티 쿼리가 오류와 함께 실행됩니다.

 foreach (var product in productList) 
     { 
      cc2nexo_SubiektProduct newproduct = new cc2nexo_SubiektProduct(); 
      newproduct.Name = product.Name; 
      newproduct.VAT = product.VAT; 
      newproduct.Id = product.Id; 
      foreach (var stawkaVAT in myNexo_ExitoEntities.StawkiVat) 
      { 
       if (stawkaVAT.Stawka * 100 == tryconvert_dec(newproduct.VAT)) 
       { 
        newproduct.VAT_Id = stawkaVAT.Id; 

       } 
      } 
      myNexo_ExitoEntities.cc2nexo_SubiektProduct.Add(newproduct); 
      SurroundWithTryCatchDB(() => 
      { 
       myNexo_ExitoEntities.SaveChanges(); 
      }); 
     } 


     var orders = (from myorders in myNexo_ExitoEntities.temp_SubiektOrderList 
         select myorders).ToList(); 

     foreach (var order in orders) 
     { 

      cc2nexo_SubiektOrderList neworder = new cc2nexo_SubiektOrderList(); 
      neworder.Data_utworzenia_sprawy = tryconvert_date(order.Data_utworzenia_sprawy); 
      neworder.Data_modyfikacji_sprawy = tryconvert_date(order.Data_modyfikacji_sprawy); 
      neworder.Data_umowy = tryconvert_date(order.Data_umowy); 
      neworder.Id = order.Id; 
      myNexo_ExitoEntities.cc2nexo_SubiektOrderList.Add(neworder); 
      SurroundWithTryCatchDB(() => 
      { 
       myNexo_ExitoEntities.SaveChanges(); 
      }); 
      Debug.WriteLine(neworder.LastName); 
     } 

나는 오류

객체의 고유 인덱스 'dbo.cc2nexo_SubiektProduct'에 중복 키 행을 삽입 할 수 없습니다를 수신하고 'K_ID'. 중복 키 값은 (1)입니다. 문이 종료되었습니다.

+0

오류 메시지는 중복 된 키 값이 있음을 나타냅니다. 이 값은 어디에서 결정됩니까? 각 행에 고유 한 키가 있는지 확인하려면 어떻게해야합니까? – danjp

+0

두 번째 쿼리 만 실행하면 새 행이 cc2nexo_SubiektOrderList에 추가됩니다. 두 쿼리를 모두 실행하면 첫 번째 쿼리는 productList에 행을 추가하지 않습니다 (K_ID 인덱스로 인해 OK). 두 번째 쿼리는 행을 추가하지 않습니다. SaveChanges는 여전히 시도합니다 첫 번째 쿼리의 변경 사항을 저장) – Jacek

답변

0

문제점의 원인은 SurroundWithTryCatchDB 프로시 저는 내 질문에 나열되지 않았습니다. 고유 쿼리로 인해 첫 번째 쿼리에서 예외가 발생했기 때문에 SaveChanges가 모두 작동하지 않았습니다. 고유 한 값으로 작업하도록 첫 번째 쿼리를 변경했으며 이제는 모든 것이 정상입니다.