에서 자식 요소를 반환합니다. 최신 ASP.Net WebAPI Nightly 빌드 (2013-01-16)를 사용하고 있습니다.ASP.NET WebAPI OData
저는 환자와 방문이라는 두 엔티티가있는 간단한 EF 데이터베이스 첫 번째 모델을 보유하고 있습니다. 각 환자는 많은 방문을 할 수 있습니다.
내 환자 목록을 쿼리하고 각 환자의 방문 엔터티가 인라인으로 반환되도록 할 수 있습니다. 나는 WebAPI의 OData 구현이 $ expand를 아직 지원하지 않는다는 것을 알고있다. 나는 단지 선택적인 클라이언트 제어 확장이 지원되지 않으며 확장 서버 측을 강제 할 수 있다는 것을 의미한다.
현재 방문 중 어떤 것도 인라인되지 않습니다. 내 데이터베이스에 대해 실행하는 쿼리가 실제로 방문 정보를 포함 않음을 확인한
[Queryable(AllowedQueryOptions=AllowedQueryOptions.Supported)]
public override IQueryable<Patient> Get()
{
var query = this.entities.Patients.Include("Visits");
return query;
}
처럼
예를 들어, 내 PatientController의() 가져 오기() 메소드 보인다.
예를 들어 공개적으로 사용 가능한 OData 서비스를 사용하려면 http://services.odata.org/OData/OData.svc/에서 서비스를 사용하면 Suppliers 목록을 얻을 수 있습니다. 이것은 http://http://services.odata.org/OData/OData.svc/Suppliers입니다. 또한 제품 목록이 포함 된 공급 업체 목록을 요청할 수도 있습니다. http://http://services.odata.org/OData/OData.svc/Suppliers?$expand=Products
ASP.NET 코드를 통해 (기호 서버를 통해) System.Web.Http.OData.Formatter에 도착했습니다. .Serialization.ODataEntityTypeSerializer 및 CreatePropertyBag 메서드는 직렬화 할 속성 목록을 작성하고 탐색 속성은 포함하지 않으며 NavigationLinks로 쓰지 않고 다른 곳에서는 열거되지 않는 것처럼 보입니다. .
저는 ASP.NET 세계에 상당히 익숙하며 일주일 정도 시간이 걸렸습니다 (특히 2012 년 말 OData에 대한 변경 사항을 반영하여 추가 변경 사항을 적용한 결과). 2013 년까지).
나는 ODataEntityTypeSerializer가 수정 될 경우 (내가 시도 할 수있는 최선의 방법으로 중첩 된 인라인 피드로 각 네비게이션 링크 내에서)이 추가 정보를 적절한 위치에 삽입하는 것이 좋을 것이라고 생각합니다. d 설정하십시오.
질문 :
내가 뭔가를 분명 간과하고 난이 문제를 켭 설정할 수있는 플래그가있다? 나는 그런 플래그가 존재한다면 왜 디폴트로 꺼져 있는지를 볼 수있다. (EF 지연로드와이 플래그는 잘되지 않는다)
# 1이 아니오라면, 내가 할 수있는 다른 ODataEntityTypeSerializer가 있는가? 용도? 그렇다면 어떻게 전환합니까?
# 2가 아니오라면, 내 자신의 글쓰기를 시작해야 할 곳이 있습니까? 난 내 자신의 시리얼 라이저에 대체 또는 내가 (런타임 프로젝트에 반대) 매우
감사를 ASP.NET의 확장 프로젝트의 내 자신의 포크를 유지해야 할 수있는 곳이 있나요!
나는 내 아이 엔티티는 항상 나에게 방법을 포함라는 데없는에도 불구하고 포함되어 있습니다 ... 반대 문제를 가지고 이런 식으로 지정했습니다. JSON.Net 시리얼 라이저를 사용하고 있는데 차이가있을 수 있습니다. –