2011-01-07 4 views
7

WCF DataService를 사용하며 POCO를 사용하고 싶습니다. DataServiceKey가 작동하려면 (분명히) DataServiceKey를 지정해야합니다. 내가 그렇게 할 때 System.Data.Services.Client (System.Data.Services.Common 용)를 참조해야합니다. 이는 POCO가 느껴지지 않습니다.WCF DataService, POCO에서 [DataServiceKey]를 피하는 방법

내 개체를 깨끗하게 유지하고 다른 곳에서 키를 지정하는 방법이 있습니까? 당신이 반사 제공자를 사용하고 있고 수업 키 속성에 대한 규칙을 따르지 않는 경우

+0

아니요, 다른 방법은 모르겠습니다. 따라서 위의 기능을 사용하려면 POCO 클래스의 단일 속성을 수락해야합니다. 그렇지 않으면 WCF 데이터 서비스를 사용하지 마십시오. –

+0

나는 순전히 순수 주의자가 아니므로 내가 그것을 사용하는 대안, 그냥 –

답변

10

는, 당신은 DataServiceKey 속성을 사용합니다. 리플렉션 프로 바이더는, 클래스 정의 및 컨텍스트 클래스를 DataService에 제공했을 경우에 취득하는 것입니다. 따라서 IDataServiceMetadataProvider를 구현하지 않으면 리플렉션 공급자를 사용할 가능성이 큽니다. 클래스의 특성이없는 리플렉션 공급자를 사용할 수도 있지만 WCF Data Services는 추론을 적용하여 주요 속성을 파악합니다. 그것은 이렇게 가고 : 문제의 클래스가 라는 속성 ID를 가지고

  • 경우, 그것은 유일한 키 속성으로 ID를 가진 기업 입니다. 클래스가 예를 고객을 촉구하고 의 CustomerID라는 속성이 경우
  • , 그것은 유일한 키 속성으로 의 CustomerID 속성 엔티티입니다 (클래스의 이름은 샘플로 분명히 이다).

다른 속성은 DataServiceKey 속성이없는 키 속성으로 인식되지 않습니다. 이 내용은이 블로그의 예제에서도 설명합니다. http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using-the-reflection-provider.aspx

임의의 키 속성을 가진 100 % POCO 클래스를 사용할 수 있지만 사용자 지정 공급자를 구현해야합니다. 이것은 프로그램 적으로 클래스의 모양을 정의해야하므로 상당히 많은 작업이 필요합니다. 샘플 사용자 지정 공급자 연습은 다음에서 찾을 수 있습니다. http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

+0

우수를 확인하고 싶습니다, 그게 내가 무엇을 찾고 있었는지. 고맙습니다! –

관련 문제