Asp.net web api Breeze Web API往返问题

Asp.net web api Breeze Web API往返问题,asp.net-web-api,breeze,Asp.net Web Api,Breeze,嗨,我正试图让Breeze创建一个元数据存储,但是消息失败了 NamingConvention此服务器属性名称不能正确往返 我使用开箱即用的Web API实现了相同的自引用循环,并且能够解决这个问题 json.SerializerSettings.ReferenceLoopHandling=Newtonsoft.json.ReferenceLoopHandling.Ignore 任何帮助或解决方案都将不胜感激 谢谢我在使用两个管理器时遇到了同样的问题。我发现如果你使用的是全球 breeze.Na

嗨,我正试图让Breeze创建一个元数据存储,但是消息失败了
NamingConvention此服务器属性名称不能正确往返

我使用开箱即用的Web API实现了相同的自引用循环,并且能够解决这个问题
json.SerializerSettings.ReferenceLoopHandling=Newtonsoft.json.ReferenceLoopHandling.Ignore

任何帮助或解决方案都将不胜感激


谢谢

我在使用两个管理器时遇到了同样的问题。我发现如果你使用的是全球

breeze.NamingConvention.{whateverYouUse}.setAsDefault();

需要在创建管理器之前进行设置。此外,如果您在服务器上将json序列化强制为特定的命名约定,那么客户端上的命名约定应该匹配。我正在使用breezecontext,只要它在管理器之前的设置按计划工作……也许您不需要服务器端设置?

好的,所以我解决了我自己的问题。我的表名都是以小写字母开头的,所以当我遇到往返错误时,这是因为它会看到一个实体,比如refLookup,Breeze将其视为refLookup,但也引用了一个实体作为refLookup(没有驼峰大小写,因为这是实体的名称)。所以我只是用大写字符命名数据库中的所有表。希望这对将来的人有所帮助。

微风
NamingConvention
设施支持属性别名,而不是实体类型名称别名。因此,实体类型名称的拼写必须与服务器端类型名称完全匹配。。。即使您选择NamingConvention或创建自己的自定义
NamingConvention
插件

这就是为什么我很惊讶您在使用表/实体类名时遇到了任何困难

我无法重现这个错误。这是我试过的

  • 将“foo”表添加到我的数据库中
  • 创建了相应的
    foo
  • 从Web API控制器将其作为
    foos
    查询操作方法公开
  • 在Breeze客户端上查询所有
    foos
Breeze客户端在返回我的(两)个
foo
实体时没有遇到问题

请注意,我没有试图在客户机上破坏
NamingConvention
。我保留了默认值。。。也就是说,每个客户端实体属性名称都与其对应的服务器属性名称相同。正如我所说的,
NamingConvention
与实体类型名称没有任何关系,元数据中没有表示服务器和客户端实体类型名称之间的差异

你不这么认为吗?你能提供样品吗

强烈警告不要更改Json.NET属性命名约定。所有名称别名必须由Breeze在客户端上完成


通常,如果
[BreezeController]
属性设置了Json.NET配置设置,则不应更改该设置。我能想到的唯一例外是空值处理;Breeze告诉Json.NET忽略空值。我认为这是一个错误。。。如果愿意,您可以告诉Json.NET发送空值。

这是我的完美解决方案。还有一件事,breeze希望所有列名都以大写开头。。我试着把我所有的栏目一个接一个地改成大写。