如何抑制BreezeController添加的额外属性?

时间:2014-01-24 04:40:32

标签: javascript asp.net-web-api breeze

NoDB example之后,我更改了现有的WebAPI控制器以使用Breeze.WebApi2.BreezeController注释。这会将JSON结果从非常简单的事情中改变:

[{"Name":"Thing1","Description":"Description of Thing 1"},
{"Name":"Thing2","Description":"Another description"}]

对于更复杂和带宽消耗的事情:

[{"$id":"1","$type":"MyCompany.MyProduct.Models.ContentType, MyCompany.MyProduct","Name":"Thing1","Description":"Description of Thing 1"},
{"$id":"2","$type":"MyCompany.MyProduct.Models.ContentType, MyCompany.MyProduct","Name":"Thing2","Description":"Another description"}]

this previous question中所述,额外信息实际上并不向客户端提供元数据。我仍然需要手动定义。

鉴于上述情况,有两个问题:

  1. 如果我还要在客户端上定义元数据,那么额外信息的用途是什么?
  2. 有没有办法抑制额外的属性?

1 个答案:

答案 0 :(得分:0)

在序列化期间,Json.NET在服务器上添加了$ id,$ type和$ ref属性。默认情况下,Breeze客户端使用$ type属性来确定要实现的'EntityType'。 $ id和$ ref属性用于处理对象图,以便引用实体的json永远不会表达多次。这可以通过EntityQuery'expand'方法调用或通过'select'方法在任意数量的复杂投影中发生。

Breeze不需要这些,但如果你压制它们(通过服务器上的Json.NET设置),那么你需要实现一个客户端'jsonResultsAdapter'来处理上面提到的所有内容。