本文转자:
기본 EntitySetController는 복합 키를 지원하지 않습니다. 따라서 복합 키 모델이 있는 경우 몇 가지 추가 작업이 필요합니다. 이를 수행하는 방법에 대한 예는 다음과 같습니다.
모델은 간단합니다:
으아악이 모델의 odata URL은 다음과 같습니다.
으아악그리고 우리는 이 URL에 대한 웹 API 작업에 강력한 유형의 매개변수를 갖고 싶습니다.
으아악FromODataUri 모델 바인더 속성은 odata uri 표현에서 clr 유형으로 구문 분석하는 데 사용됩니다. odata에서 문자열 값은 "'xxx'"이고 우리는 "xxx"가 되기를 원합니다.
라우트가 작동하도록 하려면 사용자 정의 라우팅 규칙을 추가하여 키 경로를 구문 분석할 수 있습니다. 다음은 샘플 구현입니다.
으아악규칙은 엔터티 키를 처리하기 위한 기본 규칙인 EntityRoutingConvention에서 상속됩니다. base.SelectAction을 호출하면 전체 키 경로가 RouteValues에 추가됩니다. 새로운 규칙은 ","가 포함되어 있는지 확인하고 이를 여러 키로 분리한 후 각각을 RouteValues로 설정합니다. 따라서 웹 API가 작업을 선택할 때 해당 값을 사용하여 선택할 작업을 결정합니다. ","가 없으면 기본 대류와 동일하게 동작합니다.
대합을 등록하려면 odata 경로를 매핑할 때 설정해야 합니다.
으아악0번 위치에 경로를 등록하면 다른 기본 경로 지정보다 먼저 실행됩니다. 따라서 기본 EntityRoutingConvetion은 그 전에 실행되지 않습니다. 그 이후에는 라우팅 작업을 받으실 수 있습니다
그럼 복합 키용 URL은 어떻게 작성하나요?
ODataConventionModelBuilder를 사용할 때 odata 링크에 편집 링크와 자체 링크가 포함되어 있으면 그렇게 할 필요가 없습니다. 자동으로 복합 키를 식별하고 URI를 구축합니다.
단, 위치 헤더에 대한 링크를 구축해야 합니다. 다음은 게시물 요청을 처리하기 위한 PeopleController.cs의 샘플 코드입니다.
으아악도움이 되기를 바랍니다.
위 내용은 [转]ASP.NET Web API OData에서 복합 키 지원의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!