Breeze 如何获取camelCase JsonFormatter的元数据

Breeze 如何获取camelCase JsonFormatter的元数据,breeze,Breeze,我在my Global.asax中使用以下命令将客户端上的格式更改为camelCase // Change Json data to camelCasing var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContrac

我在my Global.asax中使用以下命令将客户端上的格式更改为camelCase

        // Change Json data to camelCasing
        var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
此外,我们使用的是Unity,我有一个单独的服务和一个自定义的EFContextProvider类,用于重新返回在控制器中使用的元数据。我假设,因为我在BreezeController之外生成元数据,所以它会返回PascalCase中的元数据,我的代码first DbContext都在使用它


最终的结果是,我从entityQueries中获得了PascalCased元数据(我认为这似乎不正确)和Camlcased实体,但它们不是可观察的淘汰属性。任何关于我的实体为何不可见的提示或想法都将不胜感激。

您不需要为此使用ContractResolver,Breeze通过其NamingConvention类直接处理此问题:请参阅本页上的NamingConvention讨论

基本上,您只需打电话:

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

您可以使用BreezeConfig.Instance.GetJsonSerializerSettings().ContractResolver实现此服务器端

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


 BreezeConfig.Instance.GetJsonSerializerSettings().ContractResolver 
                                        = new CamelCasePropertyNamesContractResolver();
}

谢谢-这很有帮助,但我相信我的全部问题也是我返回的IQueryable不是来自EFContextManager。这是因为统一注射。我最终创建了一个自定义的EFContextManager类,并使用Unity解决了这个问题,以便将正确的IQueryable放入控制器中。