2011-11-30 2 views
0

먼저 WCF Data Services 및 Entity Framework 4.1 코드를 사용하여 서비스를 만들고 있습니다. uri 세그먼트를 기반으로 필터링을 수행해야한다는 요구 사항이 있습니다. 기본적으로 다중 테넌트 데이터베이스가 있으며 세입자 ID의 문자열 표현이 URI의 일부로 전달되도록 요구해야합니다. 예를 들어, URI는 다음과 같이 보일 것이다 다음 Client123 후 해당 클라이언트 데이터를 필터링하는 컨텍스트를 만드는 데 사용됩니다사용자 지정 필터가있는 WCF 데이터 서비스

http://myservice.com/client123/Users 

.

나는 OData 샘플 코드의 방향을 가리켰다. http://www.odata.org/developers/odata-sdk 기본 데이터가 생성되고 세션 ID로 캐싱되는 코드를 볼 수있다. 세션 관리를위한 논리도 추가했다. 그러나 DSPContext 등을 통해 수행되는 방식은 엔티티 프레임 워크 기반 구현에 필요하지 않아야하는 것처럼 보입니다. (적어도 필자가 Entity Framework를 사용하는 경우에는 사용자 지정 컨텍스트를 만들 필요가 없습니다.)

표준 Entity Framework 기반 데이터 원본을 사용하여 이러한 종류의 구현을 수행하는 좋은 예를 알고있는 사람이 있습니까? 또는 기존 SDK 코드를 수정하는 방법에 대한 조언을받을 수 있습니까? 나는 주로 메타 데이터 생성에 중점을두고있다 (이것도 필요하지 않은가?) 그리고 자원 생성.

미리 감사드립니다.

+0

나는 정말로이 문제에 매달렸다. 나는 serviceroute를 등록 함으로서이 경로를 유지하려고 노력했다. 그 문제는 자리 표시자가 서비스 경로에서 지원되지 않는 것으로 보입니다. 도와주세요! :-D – RockyMountainHigh

답변

0

클라이언트 ID와 상관없이 서비스가 항상 동일하게 보이는 EF 기반 서비스를 사용하는 경우 고급 맞춤형 제공 업체가 필요하지 않습니다. SDK의 트릭을 사용하여 적절한 클라이언트 ID를 얻고 "일반적인"EF 기반 WCF DS 서비스를 노출하고 DataService.CreateDataSource 재정의에서 클라이언트 ID를 사용하여 해당 클라이언트에 적합한 EF 컨텍스트를 만듭니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 그러면 id를 추출하여 전달하기 위해 uritemplate 일치 작업을 수행할까요? 나는 분명해야 할 뭔가를 놓치고 있다고 생각합니다. – RockyMountainHigh

+0

CreateDataSource를 재정의하면 어떻게 든 클라이언트 ID를 가져와야합니다. 몇 가지 방법이 있습니다 (정확한 호스트에 따라 다름). 한 가지 방법은 요청 URI를 검사하여 거기에서 가져 오는 것입니다. 다른 하나는 SDK 샘플이 세션에서 사용하는 트릭 일 수 있습니다. –

+0

나는 uriteplate를 사용하고 boundparameter를 얻음으로써 내가 원하는 것을 얻을 수 있었다. 그러나 여전히 클라이언트에 대해 찾을 수없는 리소스가 있습니다 123. – RockyMountainHigh

관련 문제