2012-04-13 3 views
1

내 서비스 계층을 사용하여 EF에서 조인하는 중 일부 문제가 있습니다.Entity Framework 4.3, 조인 사용

나는이 문제를 알아 내려고 많은 시간을 보냈습니다

"지정된 LINQ 표현이 다른 문맥과 관련된 쿼리에 대한 참조를 포함"내가 수행하려고 할 때마다 나는 다음과 같은 오류가 가입 할 수 있습니다. 필자가 보았던 대부분의 기사는 서로 다른 상황에서 엔티티 집합에 참여하는 것을 다룹니다. 그러나 이것은 동일한 DB를 사용하여 나에게 일어나고있다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

예제 코드 :

public virtual IList<ProductVariantAttribute> GetProductVariantAttributes(int ProductID) 
    { 
     var query = from pva in _productVariantAttributeRepository.Table 
        join b in _productAttributeRepository.Table on pva.ProductAttributeID equals b.ProductAttributeID 
        where pva.ProductID == ProductID 
        select pva; 

     var productVariantAttributes = query.ToList(); 
     return productVariantAttributes; 
    } 
+0

이 기사는 문맥 인스턴스에 대해 가장 많이 언급하고 있으며 저장소 패턴을 갖고있는 것처럼 보일 수 있으므로 각 저장소에는 자체 컨텍스트 인스턴스가 있습니다. – meandmycode

답변

1

이 데이터베이스와는 아무 상관이있다. 그것은 ObjectContext의 인스턴스 인 과 관련이 있습니다.

쿼리에서 두 개의 다른 리포지토리를 참조하고 있습니다. 나는 그들 각각이 EntityContext를 감싸고 있다고 생각한다. 이로 인해이 메시지가 나타납니다.

또한 안티 패턴입니다. HTTP 요청이나 WCF 호출 당 하나의 EntityContext를 열거 나 작업 단위가 무엇이든간에 열 것을 권장합니다.

+1

감사합니다. DI를 사용하여 컨텍스트 인터페이스를 등록하고 있습니다. Dependency Registrar에서 .InstancePerHttpRequest() 특성을 추가하는 것을 잊었습니다. – Dereck

관련 문제