您好我正在尝试让Breeze创建一个元数据存储,但它失败了
NamingConvention for this server property name does not roundtrip properly
我使用开箱即用的Web API进行相同的自引用循环,并且能够解决但设置
json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
非常感谢任何帮助或解决方案。
由于
答案 0 :(得分:0)
使用两位经理时遇到了同样的问题。我发现如果你使用全局
breeze.NamingConvention.{whateverYouUse}.setAsDefault();
需要在创建经理之前设置它。此外,如果要将json序列化强制为服务器上的特定命名约定,则客户端上的命名约定应匹配。我正在使用breezecontext,只要它在管理器之前的设置都按计划工作。可能你不需要服务器端设置?
答案 1 :(得分:0)
好的,所以我解决了自己的问题。我的表名都是以小写字母开头的,所以当我得到往返错误时,这是因为它会查看一个实体,例如refLookup,它被Breeze视为RefLookup,但也被引用为一个实体作为refLookup(没有骆驼案例为这就是实体的名称)。所以我只是用大写字符命名数据库中的所有表。希望将来有所帮助。
答案 2 :(得分:0)
Breeze NamingConvention
工具支持属性别名,而非实体类型名称别名。因此,实体类型名称的拼写必须与服务器端类型名称完全匹配...即使您选择camelCasing NamingConvention或创建自己的自定义NamingConvention
插件。
这就是为什么我对表/实体类名称包装有任何困难感到惊讶。
我无法重现此错误。这是我试过的
foo
类foos
查询操作方法从Web API控制器公开foos
Breeze客户端可以轻松返回我的(两个)foo
个实体。
请注意,我没有尝试弄乱客户端上的NamingConvention
。我保留了默认值...即每个客户端实体属性名称与其对应的服务器属性名称相同。正如我所说,NamingConvention
对实体类型名称没有任何作用,并且元数据中没有表示服务器和客户端实体类型名称之间的差异。
你认为不是吗?你能提供样品吗?
强烈谨慎:不要更改Json.NET属性命名约定。所有名称别名必须由Breeze在客户端完成。
通常,如果[BreezeController]
属性设置该值,则不应更改Json.NET配置设置。我能想到的唯一例外是空值处理; Breeze告诉Json.NET忽略空值。我认为这是一个错误......如果你愿意,你可以告诉Json.NET发送空值。