2011-10-10 4 views
0

"월별 보고서"와 같은 작업을 수행하려면 wcf 데이터 서비스의 일부 데이터를 생성해야합니다. odata 프로토콜을 통해 Afaik 집계를 수행 할 수 없습니다. 내 자신의 WebGet 메서드를 구현해야 할 것 같아요 (또는 다른 가능성이 있습니까?). 첫 번째 샷은 다음과 같습니다.WCF 데이터 서비스 필터 집계 방법

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any, UseSynchronizationContext = false)] 
class MyDataService : DataService<MyContext> 
{ 
    public static void InitializeService(DataServiceConfiguration config) 
    { 
     config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; 

     config.SetEntitySetAccessRule("*", EntitySetRights.All); 
     config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 
     config.UseVerboseErrors = true; 
    } 

    [WebGet] 
    public int SumColumnOfMyTable() 
    { 
     // return here the aggregated data with the usage of the odata $filter param 
    } 

} 

odata 프로토콜의 $ filter 매개 변수를 사용하여 결합을 필터링하고 싶습니다. 이것이 가능한가? 이것이 WCF Data Services와의 집계를 수행하는 올바른 방법입니까? 나는 아주 단서가 있고 그것에 관하여 유용한 정보를 찾아 낼 수 없다. 미리 감사드립니다 ...

답변

0

이 생각을 해보니 가장 쉽고 쉬운 방법은 아마도 데이터베이스보기 일 것입니다. 즉, 뷰에 매핑되고 데이터 서비스를 통해 액세스 할 수있는 추가 엔터티를 만들 수 있음을 의미합니다. 그러나보기에 기본 키가 없기 때문에 이것은 내게 문제를 제공합니다 ...

다른 아이디어?

업데이트 :

coalesce(cast(rdb$get_context('USER_TRANSACTION', 'row#') as integer), 0) + 1 as ID 

그러나 WCF 데이터 서비스에이 문제에 대한 "깨끗한"해결책이없는 것 같다 내가보기 (파이어 버드)에서 각 행에 대한 ID를 genarating하여 기본 키 문제 해결 ?