다음은 시나리오입니다. WCF 서비스가 있는데이 서비스가 호출되면 다른 클래스 (Ninject를 통해 생성됨)의 인스턴스로 제어가 전달됩니다. 이 클래스에서는 Entity Framework 및 저장소와 관련된 작업을 수행해야합니다. 짧은 이야기를 짧게 자르기 위해 다음 바인딩을 선언했습니다.Ninject가 WCF에서 생성자 인수를 사용하여 새 인스턴스를 만들지 않습니다.
Bind<IGenericProductRepository>()
.To<GenericProductRepository>()
.WithConstructorArgument("context", new StagingDataContext());
내가이 저장소를 사용하고자 할 때 나는 다음을 가지고있다.
using (var genericProductRepository = IoC.Resolve<IGenericProductRepository>())
문제는 새로운 요청이 있다면이 방법은 동일한 요청에 여러 번 호출하는 경우 난 단지 내가라는 오류가 발생, genericProductRepository의 새로운 인스턴스를 얻을이며, 그 맥락합니다 (EF 컨텍스트) 이미 처리 된 같은 인스턴스를 다시 가져 오는 것 같습니다 때문에 using 문에 이미 배치 된 때문입니다. 다른 방법으로 설명하기 위해 Microsoft WCF 테스트 클라이언트를 사용하여 처음 호출 할 때 테스트 클라이언트를 다시 시작하지 않고 호출 버튼을 다시 누르면 (즉 동일한 요청) 코드가 올바르게 실행됩니다. 그러면이 오류가 발생합니다 이미 처분 중이다.
나는 Ninject와 함께 제공되는 다양한 "범위"를 가지고 놀려고했지만 명확하게 나는 뭔가를 놓치고 있습니다.
그래서 내 기본 질문은, 어떻게 그 라인을 때마다 동일한 저장소를 사용하여 새 저장소를 어떻게해야합니까? 도움을 주시면 대단히 감사하겠습니다. 저는 회사에서 Ninject를 채택하고 Spring을 중단하라고 촉구합니다.