Breeze 如何获取camelCase JsonFormatter的元数据
我在my Global.asax中使用以下命令将客户端上的格式更改为camelCaseBreeze 如何获取camelCase JsonFormatter的元数据,breeze,Breeze,我在my Global.asax中使用以下命令将客户端上的格式更改为camelCase // Change Json data to camelCasing var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContrac
// 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放入控制器中。