2012-08-10 2 views
1

WCF Data Services 및 OData를 처음으로 확인하고 있으므로 엔티티 모델에서 상속을 사용하는 것이 바람직하지 않습니까? 그것은 잘 지원되지 않는 것 같습니다.WCF Data Services 및 OData에서 파생 된 엔터티 형식

예를 들어 OData에서 파생 된 유형의 속성을 필터링하려는 문제가 발생합니다. 하지만 기본 형식 속성에 대해서만 필터링하는 것이 가능합니까?

이 실패 HTTP : // [로컬 호스트] : 8080/엔티티 $ 필터 = startswith (텍스트, 즐 ')

어떤 경우에는, 그것은 더 비 파생 개체 유형을 만들 수 있고 서로 다른 엔티티 유형의 속성을 "조화"할 인터페이스가 있습니까? 예를 들어

:

EntityBase -> 아이디, ParentId

노트북 : EntityBase -> 제목

참고 : EntityBase -> 텍스트

또는

IEntity -> 아이디 , ParentId

수첩 : IEntity -> 아이디, ParentId, 제목

참고 : IEntity -> 아이디, ParentId, 텍스트


왜 5.1.0-RC1에서 지원되는 $ 형식의 태그가 아직 아닌가요?

답변

2

$ 형식이 곧 지원됩니다. 이는 이데올로기 적 이유와 간단한 해결 방법이 있기 때문에 부분적으로 우선 순위가 낮습니다. 그 때까지는 JSONP attribute 파블로가 블로그에 올렸습니다. 여하튼, 앞으로 몇 달 안에 우리의 스택에 의해 URL에서 지원되는 $ 형식을 볼 수 있어야합니다.

파생 된 유형의 경우 대부분의 작업은 내 지식이 최상인 경우 이어야합니다. 파생 된 유형의 특성을 필터링하려면 먼저 해당 유형으로 변환해야합니다. 예를 들어, 내 스크래치 서비스에서 나는 다음과 같은 클래스가 :

:

namespace Scratch.Web 
{ 
    public abstract class Product 
    { 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public Product RelatedProduct { get; set; } 
    } 

    public class DiscountedProduct : Product 
    { 
     public double Discount { get; set; } 
     public ICollection<Category> Categories { get; set; } 
    } 

    // ... 
} 

을 여기에는 다음과 같은 (할인보다 10 할인 된 제품을 모두 저를 얻을 것이다)와 같은 쿼리를 실행 나를 수 있습니다

http://localhost:59803/ScratchService.svc/Products/Scratch.Web.DiscountedProduct?$filter=Discount gt 10.0 

URL에서 정규화 된 엔터티 형식 이름을 사용하여 필터링 할 유형으로의 캐스트를 확인하십시오.

+0

LightSwitch가 도메인 모델에서 상속을 지원하지 않는 것으로 나타 났으므로 아직 모델에서 상속을 사용하는 사람은 권장하지 않습니다. http://connect.microsoft.com/VisualStudio/feedback/details/749933/wcf-data-service-odata –

+0

클라이언트가 LightSwitch가 될 것이라면 그건 사실 일 것입니다. 클라이언트가 WCF Data Services 또는 data.js, ODataLib 또는 간단한 JavaScript가 될 경우 상속을 사용하면 완벽 할 것입니다. –

+0

Data Services에서 상속을 사용하려면 라이브러리의 최신 버전으로 업그레이드해야했습니다. 클라이언트 라이브러리 버전 5.4 (NuGet) 사용하고 상속이 해당 버전에서 작동하는지 확인할 수 있습니다. –

관련 문제