0

엔티티 프레임 워크 쿼리와 관련하여 질문이 있습니다.. 형식 안전 Entity Framework 쿼리 (포함 및 위치)에서 사용할 수 없습니다.

EF에서 제공하는 확장 메서드를 사용하는 쿼리가 있으므로 형식 안전 포함 및 where 절을 사용할 수 있습니다. 그러나 Include는 lambda 매개 변수와 함께 사용되므로 Where와 같은 메서드를 체인화하기 위해 IQueryable을 반환하는 IQueryable의 확장 메서드입니다. ObjectQuery를 반환하는 ObjectQuery의 메서드는 문자열 매개 변수와 함께 포함됩니다. Execute는 IQueryable이 아닌 ObjectQuery에 대한 메서드이므로 IQueryable 메서드를 사용할 때는 사용할 수 없습니다.

호출 방법은 있습니까? 실행하지만 IQueryable이 있습니까? 이 좋은 연습인지 아닌지

return 
    this.Storage.Customer.OfType<Preferred>() 
    .Include(b => b.Order) 
    .Where(cust => cust.Id == customerId && cust.CustomerType== (int)cusType) 
    .SingleOrDefault(); 

감사합니다,

+0

무엇을 하시겠습니까? – Maarten

+0

병합 옵션을 사용하여 .Execute를 호출하고 싶습니다. 그러나 여기에서 람다를 사용하고 확장 메서드를 사용하는 경우 include 할 때 사용할 수 없습니다. include 및 where에 문자열을 사용하는 경우에만 사용할 수 있습니다. – MicroMan

답변

0

내가 그것을 발견, 어쩌면 누군가가 언급 할 수 있습니까?

 var query =    
      this.Storage.Tubes.OfType<Preferred>() 
         .Include(b => b.Order); 

     return ((ObjectQuery<Preferred>)query).Execute(MergeOption.OverwriteChanges) 
               .SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType);