2014-07-18 1 views
0

메타 데이터를 제공하지 않는 레거시 WebAPI와 통신하는 Breeze.Sharp 응용 프로그램이 있습니다.Breeze # executeQuery는 빈 객체를 반환합니다.

쿼리가 제대로 실행 된 것 같습니다. 예상되는 개체 수가 반환되지만 모두 비어 있습니다. 조회 매개 변수 수정 또한 작동합니다. 리턴 된 오브젝트 수는 예상대로 변경됩니다. EntityManager.MetadataStore를 가지고 놀았지만 아무것도 도움이되지 않았습니다.

다음은 현재 WebAPI와 통신하기 위해 사용하고있는 마지막 코드입니다. 마지막 Foreach 루프에서

public class DokumentModelBreeze: BaseEntity 
{ 
    public string id { get; set; } 
    public string numer { get; set; } 
    public decimal suma { get; set; } 
}  

... 

Configuration.Instance.ProbeAssemblies(typeof(DokumentModelBreeze).Assembly); 

var manager = new EntityManager("http://localhost:52357/api/"); 
manager.DataService.HasServerMetadata = false; 

var store = manager.MetadataStore; 
store.SetResourceName("dokumenty", typeof(DokumentModelBreeze), true); 
store.NamingConvention = new CamelCasePropertiesNamingConvention(); 

var builder = new EntityTypeBuilder<DokumentModelBreeze>(store); 
builder.DataProperty(d => d.id).IsPartOfKey(); 
using(TextWriter writer = File.CreateText("C:/metadata.txt")) { 
    store.ExportMetadata(writer); 

var query = new EntityQuery<DokumentModelBreeze>("dokumenty"); 
query = query.WithParameter("nrFirmy", 1).Where(p => p.numer=="123"); 
var results = await manager.ExecuteQuery<DokumentModelBreeze>(query); 
List<DokumentModelBreeze> Dokumenty = new List<DokumentModelBreeze>(); 
foreach(var item in results) 
    Dokumenty.Add(item); 

모든 항목 유형 DokumentModelBreeze들이지만, 각 부재의 특성은 각각 null 또는 0과 같다.

나는, 파일에 MetadataStore를 저장 한이 아래에 포함되어 있습니다 :

{ 
    "metadataVersion": "1.0.3", 
    "namingConvention": { 
    "clientServerNamespaceMap": {}, 
    "name": "camelCaseProperties" 
    }, 
    "structuralTypes": [ 
    { 
     "shortName": "BaseEntity", 
     "namespace": "Breeze.Sharp", 
     "baseTypeName": "", 
     "autoGeneratedKeyType": "None" 
    }, 
    { 
     "shortName": "DokumentModelBreeze", 
     "namespace": "BRuNETWPF.ViewModels", 
     "baseTypeName": "BaseEntity:#Breeze.Sharp", 
     "autoGeneratedKeyType": "None", 
     "defaultResourceName": "dokumenty", 
     "dataProperties": [ 
     { 
      "name": "id", 
      "dataType": "String", 
      "isNullable": false, 
      "defaultValue": "", 
      "isPartOfKey": true 
     }, 
     { 
      "name": "numer", 
      "dataType": "String", 
      "isNullable": false, 
      "defaultValue": "" 
     }, 
     { 
      "name": "suma", 
      "dataType": "Decimal", 
      "isNullable": false, 
      "defaultValue": 0.0 
     } 
     ] 
    } 
    ], 
    "resourceEntityTypeMap": { 
    "dokumenty": "DokumentModelBreeze:#BRuNETWPF.ViewModels" 
    } 
} 

내가 브리즈 # 메타 데이터없이 WebAPI를 조회 할 수 없습니다 여기 혹은 뭔가를 놓치고 있습니까? 메타 데이터가 노출 된 테스트 WebAPI에 대해 동일한 코드가 실행됩니다.

답변

1

귀하의 GetValue와 SetValue는 속성과 같이 정의해야합니다 : 그것은, 나도 알아,하지만 우리의 최고 기술 리드 한 후 나를 위해 그것을 고정을 고통 지적 것

public string id 
    { 
     get { return GetValue<string>("id"); } 
     set { SetValue(value); } 
    } 

: