2013-05-23 3 views
0

Global.asax에서 다음을 사용하여 클라이언트에서 camelCase로 형식을 변경합니다. 또한camelCase JsonFormatter에 대한 메타 데이터를 얻는 방법

 // Change Json data to camelCasing 
     var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
     json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

, 우리는 유니티를 사용하고, 나는 컨트롤러에서 소비되는 별도의 서비스 및 메타 데이터를 resturns 사용자 정의 EFContextProvider 클래스를 가지고있다. 필자는 BreezeController 외부에서 메타 데이터를 생성하기 때문에 PascalCase에서 메타 데이터를 반환한다는 것을 가정합니다.이 코드는 처음으로 DbContext가 모두 사용합니다.

최종 결과는 PascalCased 메타 데이터 (이것은 예상과 다르게 보임)와 entityQueries의 camelCased 엔티티를 볼 수 있지만 관찰 할 수없는 녹아웃 속성은 아닙니다. 내 단체가 왜 관측되지 않는지에 대한 조언이나 아이디어는 인정 될 것입니다.

답변

1

이렇게하려면 ContractResolver를 사용할 필요가 없습니다. Breeze는 NamingConvention 클래스를 통해 직접 처리합니다.이 페이지의 NamingConvention 토론을 참조하십시오. Breeze Docs - NamingConvention. .

breeze.NamingConvention.camelCase.setAsDefault(); // a convention can self-register as the default 
+0

감사합니다. 도움이되었지만, 전체적인 문제는 EFContextManager에서 가져 오지 않은 IQueryable을 반환하고 있다고 생각합니다. 이것은 Unity Injection 때문이었습니다. 커스텀 EFContextManager 클래스를 생성하고 Unity로 올바른 IQueryable을 컨트롤러로 가져온다. –

0

당신은 BreezeConfig.Instance.GetJsonSerializerSettings() ContractResolver를 사용하여이 서버 측을 얻을 수 있습니다

기본적으로, 당신이해야 할 모든 호출입니다.

public static void RegisterBreezePreStart() { 
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
    name: "BreezeApi", 
    routeTemplate: "breeze/{controller}/{action}" 
); 


BreezeConfig.Instance.GetJsonSerializerSettings().ContractResolver 
             = new CamelCasePropertyNamesContractResolver(); 
} 
관련 문제