2013-03-28 3 views
0

사용자 정의 메타 데이터 정의를 만들고 breeze 엔터티 관리자에 추가하여 서버의 사용자 지정 유형에 breeze를 연결하는 데 성공했습니다.데이터베이스가없는 Breeze를 사용하여 속성 확장

그러나 자바 스크립트에서 사용자 정의 된 객체 (Employee)를 요청할 수 없으며 해당 관계를 완전히 검색 할 수 없습니다.

즉, 서버의 목록 유형 인 "LoginStats"라는 속성이있는 Employee라는 개체가 있습니다. 컬렉션에 바람 하나의 요소 수익률을 사용하여이 객체를 요청할 때, 때이 같은 $ 약속 모양의 6

결과가 있어야 :

이상하게
data.results[0].loginStats()[0] //object 
data.results[0].loginStats()[1] //undefined 

, 내가 개별적 특성을 선택하면, .select ("LoginStats")와 같이 배열의 6 개 항목과 함께 완료됩니다.

breeze 호출을 사용하여 원하는 모든 속성을 철자하지 않고이 개체를 검색하는 방법은 무엇입니까? 나는 .expand() 절을 사용하려고 시도했지만 불행하게도이 작업을 수행하는 방식으로 EntityFramework에 연결되지 않았습니다.

미리 감사드립니다.

편집 : Here's a sample of what it looks like "선택"문을 사용하는 것보다 객체를 요청할 때. 이 이미지는 또한 모든 속성을 선택할 때 어떤 일이 발생 하는지를 보여줍니다. 즉, 모든 속성이 올바르게 채워졌지만 더 이상 관찰 할 수없는 것입니다. Eeeek!

컨트롤러 코드 :

 [HttpGet] 
     public IQueryable<Employee> Get(string id) 
     { 
      var criterion = new Criterion<Employee, bool>(e => e.CustomerId == id); 
      var loginStatisticsExtendedProperty = new FillEmployeeLoginStatistics(_UserRoleProvider, _CustomerLoginStatsViewModelRepository); 
      var availableCompaniesForEmployess = new AvailableCompaniesForEmployess(_CompanyAffiliatesRepository); 
      return _EmployeeRepository.Find(criterion, loginStatisticsExtendedProperty, _EmployeeDetailsExtendedProperty, availableCompaniesForEmployess); 
     } 

답변

0

당신이 그것을 호출하는 서버 측 컨트롤러 메소드 (들) 확실히 말할 어려운 것을 보지 않고. 하지만 몇 가지 제안이 있습니다.

먼저 컨트롤러 메서드가 IQueryable 컬렉션을 반환하는지 확인하십시오. 클라이언트 측 조회를 사용하여 자원을 추가로 제한하려는 경우에만 필요합니다. 일반적으로 컬렉션을 반환하기 전에 .AsQueryable() 호출을 추가하여 컬렉션을 IQueryable로 만들 수 있습니다.

둘째, "확장"구문은 EF 지원 IQueryables에 대해서만 작동합니다. 그러나 부모와 함께 '직렬화'한다는 가정하에 클라이언트의 객체 그래프를 반환 할 수 있습니다. "no db"유형의 리소스의 경우 일반적으로 클라이언트에 전송하려는 탐색 속성의 서버에서 강제로 해결해야합니다. JsonResultsAdapter를 추가하면 'visitNode'메소드 내부에서 중단 점을 지정하여 클라이언트에 직렬화되는 내용에 실제로 '디버그'할 수 있습니다.

컨트롤러 메서드 def가 충분하지 않은 경우 게시하십시오.

+0

감사합니다. Jay. 내 컨트롤러를 보여주기 위해 사진 앨범 (http://imgur.com/a/13158)을 업데이트했습니다. 그것은 검은 배경 그림입니다. 나는 그것을 IQueryable로 리턴 시켰지만 그것들과 관련된 콜렉션은 질의 가능해야합니까? 현재 목록입니다. – letsgetsilly

+0

그들과 연관된 콜렉션은 질의 할 필요가 없지만, 당신의 경우에는 콜렉션이 부모와 함께 직렬화되어 있는지 확인해야합니다. 서버에서 오는 json 페이로드를 살펴보고 콜렉션이 전선을 통과하는지 확인하십시오. 또한이 콜렉션의 '엔티티'에 클라이언트 측 엔티티 유형 중 하나에 매핑되는 json $ 유형 속성이 있는지 확인하는 것이 좋습니다 (BreezeController 속성을 사용한다고 가정 함). –

+0

JSON이 정확합니다.URL을 직접 요청할 때 이러한 컬렉션이 표시됩니다. 설명하기 위해 갤러리에 이미지를 추가했습니다. – letsgetsilly

관련 문제