2016-06-13 1 views
0

내 프로젝트 (웹 응용 프로그램)에서 DI 용 Autofac을 사용하고 있습니다. 이 같은 동일한 DB 뭔가에 2 개 개의 다른 테이블을 조인 LINQ 표현이 (모든() dbSet.AsQueryable 이상 단지 래퍼를()) 내가 내 구성 요소 (repo1 및 repo2)를 등록하고Autofac을 사용하여 InstancePerRequest와 다른 컨텍스트

from repo1 in repository1.All() 
join repo2 in repository2.All() 
    on repo1.SomeField = repo2.SomeField 
..... 

을 InstancePerRequest()를 가진 컨테이너 빌더.

코드를 실행할 때 LINQ 코드에서 다음 오류가 발생합니다. "지정된 LINQ 식에 다른 컨텍스트와 연결된 쿼리에 대한 참조가 포함되어 있습니다."

나는 dbContext가 InstancePerRequest()를 통해 등록 된 구성 요소를 통해 (요청마다) 공유된다고 생각했습니다.

생각하십니까?

감사합니다.

+1

dbContext는 어떻게 생성되고 있습니까? autofac을 통해 등록되어 있습니까? 그렇다면 어떻게 등록됩니까? –

+0

웹 응용 프로그램이라고 할 때 어떤 유형을 의미합니까? 이 WebApi, WCF, MVC입니까? 애플리케이션 유형에 맞는 autofac 통합 라이브러리를 사용하고 있습니까? –

+0

"저장소"생성자를 표시하지 않습니다. 제대로 작동하게하려면'DbContext'를'PerRequest'로 등록하고 "저장소"가 생성자 매개 변수로 주입되도록해야합니다. 그럼 그냥 작동합니다. –

답변

1

"저장소"생성자를 표시하지 않습니다. 제대로 작동하게하려면 DbContextPerRequest으로 등록해야하며 "저장소"가 생성자 매개 변수로 주입되도록해야합니다. 그럼 그냥 작동합니다. PerRequest 등록 된 구성 요소의 종속성을 동일한 수명 주기로 인스턴스화해야한다는 암시 적 가정은 없습니다. 기본적으로 모든 구성 요소는 종속성별로 등록됩니다.

+0

감사합니다. Alexey. 내 저장소 생성자에 삽입 된 DbContext가 누락되었습니다. 이제 잘 작동합니다. –