2013-04-01 2 views
1

asp.net mvc + breeze를 사용하여 응용 프로그램을 개발합니다.breeze를 사용하여 레코드 가져 오기

var getTransportById = function (transportId, transportObservable) { 
     return manager.fetchEntityByKey('Transport', transportId, true) 
       .then(fetchSucceeded) 
       .fail(queryFailed); 
} 

function fetchSucceeded(data) { 
    var s = data.entity; 
    return ... 
} 

이 지금은 같은 레코드를 검색해야하지만,에 연결하는 특성 이름 보낸 사람을 '확장'해야

지금까지,이 같은 (ID 기준) 특정 레코드를 검색 다른 엔티티 (테이블). 그래서 나는이 같은 쿼리를 사용 fetchEntityByKey을 통해 하나 개의 속성을 '확장'할 수있는 방법을 찾을 수 없습니다 :

var getTransportById = function (transportId, transportObservable) { 
    var query = EntityQuery.from('Transports') 
          .where('id', 'eq', transportId) 
          .expand('Sender') 
          .orderBy(orderBy.transport); 

    return manager.executeQuery(query) 
     .then(fetchSucceeded) 
     .fail(queryFailed); 
} 

function fetchSucceeded(data) { 
    var s = data.results[0]; 
    return ... 
} 

내 질문 :가 진행하는 좋은 방법입니다? 다른 방법이 있습니까?

감사합니다.

답변

3

EntityKey에서 쿼리를 만든 다음 원하는 속성을 확장 할 수 있습니다. 다음과 같은 것 :

var entityKey = new EntityKey("Transport", transportId); 
// expand whichever nav props you want here. 
var query = EntityQuery.fromEntityKey(entityKey).expand("Sender").orderBy(...); 
return entityManager.executeQuery(query).then({ 
    ... 
}); 
+0

이유는 모르겠지만 코드를 시도 할 때 캐시의 기존 요소에 대해서만 작동합니다. 이전에 다음과 같이 새로운 엔티티를 로컬 캐시에 추가 할 때 작동하지 않습니다 :'var newTransport = manager.createEntity (entityNames.transport, initialValues); manager.addEntity (newTransport);'원래 코드와 함께 작동합니다. 어떤 생각? – Bronzato

+0

귀하의 모델이 어떻게 생겼는지 모르겠지만 방금 추가 한 엔티티가 기본 또는 외래 키를 통해 예상하는 '발신자'에게 연결되는지 확인하십시오. –

+0

Jay : 하나의 질문 : 'EntityQuery.fromEntityKey (entityKey)'가 로컬 캐시 또는 서버에서 검색 중입니까? 'manager.fetchEntityByKey ('Transport', transportId, true)'를 사용하면 세 번째 매개 변수가'true'로 설정되어 로컬 캐시에서 검색 할 수 있습니다. 이것은 새로 추가 된 엔터티이기 때문에 로컬 캐시에서 검색해야합니다. – Bronzato

관련 문제