2012-02-03 4 views

답변

0

이 메서드는 키 속성이 아니라 엔터티를 가리키는 URL을 사용합니다. 이제 대부분의 OData 서버는 URL의 주요 속성을 사용하여 엔터티를 처리하기 위해 규칙을 사용합니다. 해당 규칙은 여기 http://www.odata.org/developers/protocols/uri-conventions#AddressingEntries에 설명되어 있습니다. 그러나 나는 URL을 직접 작성하려고하지 않을 것을 강력히 제안합니다 (잘못 이해하기 쉽습니다). 아마도 당신이 일하기를 원하는 시나리오가 무엇인지 게시했다면 더 나은 대답이 가능할 수 있습니다.

0

내가하려는 것은 로컬에서 엔티티의 일부를 캐시하는 것입니다. E.G. 고객은 주 (여러 주에는 여러 개의 키가 있음)가 있다고 가정합니다. 클라이언트 (격리 된 저장소)에 상태를 캐시하고 싶습니다. 따라서 고객을 끌어 올 때 고객 상태를 확장 할 때 고객과 ​​국가의 엔티티 두 개가있는 컨텍스트를 갖게되었습니다.

UI에서 사용자가 선택할 수있는 콤보 상자의 상태 목록이 필요할 수 있지만 상태가 변경되지 않으므로 매번 상태를 내리고 싶지는 않습니다. 따라서 상태를 국가 목록에 추가하기 전에 상태가 컨텍스트에 있는지 알아야합니다. 이것은 TryGetEntity를 수행 한 것입니다. 필자는 여러 기본 키가있는 엔티티 (이름 값 쌍을 사용하여 손으로 URL을 구성)를 사용하여이 작업을 성공적으로 수행 할 수 있었지만 최상의 상태였습니다.

먼저 하나 이상의 키가있는 경우에만 URL에 키 값 쌍을 사용할 수없는 것 같습니다. 두 번째로 키의 순서가 달라진 것 같습니다.

URL을 수동으로 작성하는 것이 문제가된다는 것에 동의합니다. 그 이유는 질문에 대한 것입니다.

분명히 내 사례는 실제 상황을 단순화 한 것이지만 내가 어디로 갈 것인지를 알 수 있어야합니다.

+0

TryGetEntity를 사용하여 특정 상태가 컨텍스트에 이미 존재하는지 확인하는 대신 Context.Entities.Where (e => e.Entity.GetType() == typeof (State) && ((State) e.Entity) .ID == keyValue); 여러 키에 대해 이러한 쿼리를 작성할 수도 있습니다. 아이디어를 얻을 수 있습니다. 컨텍스트의 엔티티 수가 많지 않으면이 성능이 나쁘지 않을 것입니다. – Pratik

+0

격리 된 저장소에 엔터티를 serialize 할 때 엔터티의 ID를 저장할 수 있습니다. GetEntityDescriptor를 인스턴스와 함께 호출하면 반환 된 객체에서 Identity 속성에 액세스하여이를 저장합니다. 나중에 TryGetEntity의 매개 변수로 사용할 수 있습니다. –