탐색 할 수있는 옵션 중 하나는 사용자 지정 EntityProperty
해결 프로그램을 사용하는 것입니다. 당신이 SomeOtherID
-SomeID
에서 클래스의 속성의 이름을 변경하고 테이블 저장에 새 이름을 가진 개체를 삽입하면
, 당신은 테이블 스토리지 SomeID
및/또는 SomeOtherID
필드 엔터티를해야합니다.
다시 쿼리하면 구체화 된 엔터티 형식을 원시 속성 사전에서 만들기 위해 저장소 SDK에서 사용할 사용자 지정 EntityProperty
리졸버 대리자를 제공 할 수 있습니다. 그 위임자에서는 논리로이 시나리오를 처리하여 원하는 실제 유형을 작성할 수 있습니다. 그래서
public delegate T EntityResolver<T>(
string partitionKey,
string rowKey,
DateTimeOffset timestamp,
IDictionary<string, EntityProperty> properties,
string etag
);
:
public virtual IEnumerable<TResult> ExecuteQuery<TResult>(
TableQuery query,
EntityResolver<TResult> resolver,
TableRequestOptions requestOptions = null,
OperationContext operationContext = null
)
그리고 EntityProperty 리졸버는 속성 사전에서 강력한 유형의 엔티티를 구성하는 방법을 결정 대리자입니다 :
는
CloudTable
에서 오버로드 ExecuteQuery
방법은 EntityProperty
해결됩니다 이 대리자에서 T 타입 반환 값을 생성하는 동안 SomeID
및 SomeOtherID
키를 사용하여 kvp를 처리하는 코드를 넣습니다.
동일한 유형을 사용하여 유형 변경 사항을 처리 할 수도 있습니다. 새 스키마와 함께 삽입하고 속성 유형을 변경하고 다시 읽을 때 EntityProperty
리졸버에서이를 처리합니다.
사용자 지정 리졸버를 유지 관리하는 대신 새 데이터 모델로 데이터를 마이그레이션하는 것이 좋습니다. 사용자 지정 리졸버는 데이터 이전 프로세스 중에 사용자가 전환 단계에있는 동안 요청을 계속 처리하는 동안 도움이 될 수 있습니다.
엔티티의 속성 이름을'SomeID'에서'SomeOtherID'로 바꾸고 싶습니까? 그렇게하는 동안 속성 유형도 변경하고 싶습니까? 설명 해주십시오. –
@ GauravMantri 나는 모든 종류의 스키마 수정을 처리하기위한 통일 된 접근법을 찾으려고합니다. 이러한 변화는 동시에 일어날 수도 있고 그렇지 않을 수도 있습니다. – Impworks