2013-05-08 3 views
2

안녕 나는 (나는 우리가이 같은 루프를 사용할 수 있는지 여부를 잘 모릅니다 동시에 많은 항목을 변경하려면이 내부 entityframework 같은 코드를 원하는 모든하지만이 같은 예외가 발생합니다 :엔티티 프레임 워크 예외

을 방법 'INT32 get_Item (INT32)'방법 및이 방법을 인식하지 못하는 엔티티에

LINQ는 상점 표현으로 변환 할 수없는

코드 :.

 try 
     { 
      for (int j = 0; j < ids.Count; j++) 
      { 
       using (OzgorenEntities2 context = new OzgorenEntities2()) 
       { 
         Stock st = context.Stocks.First(i => i.id == ids[j]); 
         st.stockAmount = amounts[j]; 
         context.SaveChanges(); 
       } 
      } 
      return true; 
     } 
     catch (Exception ex) 
     { 
      return false; 
     } 

솔직히 말하면 검색은 서버 측에서 작동하지 않는다는 것을 알지만 변환 할 수없는 것은 무엇입니까?

감사

지정된 인덱스에있는 식별자 값에 대한 변수를 소개하는
+3

LINQ to Entities가 쿼리의 값으로'ids [j] '를 사용하여 문제를 일으키고 있습니다. 배열 내에서 값을 사용하기를 원한다는 것이 당신에게 분명합니다.하지만 쿼리 제공자가 염려하는 한, 배열에서 get_Item이라는 인덱서 속성에 액세스하려고 시도하고 있는데, 그것을위한 SQL 코드 생성 방법을 알고있다. –

답변

5

시도

  using (OzgorenEntities2 context = new OzgorenEntities2()) 
      { 
        var id = ids[j]; 
        Stock st = context.Stocks.First(i => i.id == id); 
        st.stockAmount = amounts[j]; 
        context.SaveChanges(); 
      } 
2

당신은 저장 값 ids[j]에 중간 변수를 추가해야합니다

try 
    { 
     for (int j = 0; j < ids.Count; j++) 
     { 
      var tempId = ids[j]; 
      using (OzgorenEntities2 context = new OzgorenEntities2()) 
      { 
        Stock st = context.Stocks.First(i => i.id == tempId); 
        st.stockAmount = amounts[j]; 
        context.SaveChanges(); 
      } 
     } 
     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 

이 때문이다 IQueriable 식의 특성. 엔티티에 대한 LINQ는 표현식 i => i.id == ids[j]을 SQL 문으로 전달하는 방법을 알지 못합니다.

+0

나는 아침까지 모든 것을 시험해보고 있었다. :)) – albatross