0

MVC3 및 WCF REST 서비스는 모두 Azure에서 호스팅되며 Entity Framework 4.1과 함께 SQL Azure를 ORM으로 사용합니다.Ninject를 사용하여 WCF 및 MVC 요청 매개 변수에 따라 특정 EF DbContext를 주입

이 설정의 확장 성을 높이기 위해 샤딩 체계를 도입하고자합니다.

Azure는 상태없는 호스팅 환경이므로 모든 단일 요청에는 원하는 데이터베이스 (사용자 별 샤딩)를 가리키는 연결 문자열을 생성하기 위해 해시를 생성하는 데 사용할 수있는 사용자 ID가 모든 단일 요청으로 채워집니다.

현재 WFF 및 MVC 확장과 함께 Ninject를 사용하여 EF DbContext를 저장소에 삽입합니다. 컨텍스트 수명주기가 요청 범위에 있습니다 (내 휴식 서비스는 aspnetcompatibility를 사용함).

내 질문 :이 삽입을 가로 채고 DbContext에 올바른 연결 문자열을 채우려면 어떻게해야합니까? 예를 들어 WCF에서 사용자 정의 ServiceHostFactory를 사용하고 있습니까?

Ninject.Interception 확장을 살펴 봤지만 서비스 및 컨트롤러를 활성화하기 전에 HTTP 요청을 차단하도록 설정하는 방법을 알지 못했습니다.

이렇게하면 기존 코드를 리팩토링하지 않고도 샤딩을 사용할 수 있습니다.

답변

1

나는이 문제에 대해 과도하게 생각해 보았다. GetShardedContext()가 HttpContext.Current 또는 WebOperationContext.Current에서 해당 생성자 인수와 함께 인스턴스를 생성

Bind<MyEntities>().ToMethod(ctx => GetShardedContext()); 

.

관련 문제