breeze从元数据web api控制器响应中排除特定实体

时间:2013-06-20 11:07:37

标签: metadata breeze

我只是想知道是否有任何方法可以轻松地从我项目中的Breeze Controller中减少元数据响应中的实体。简单就像JsonIgnore属性,可以添加到实体元数据中以排除特定属性(或至少与它们相关的数据)。

我并不太关心它,但我喜欢我的代码是高效的,我可能会从面向元数据存储的客户端中删除50%的实体,因为我有很多特定于业务逻辑的实体客户端应用程序,我想在大多数情况下,我不希望将整个数据库架构的地图广播到整个世界。

1 个答案:

答案 0 :(得分:2)

现在,如果您通过EFContextProvider,没有简单的方法,因为我们只是采用实体框架CSDL,将其转换为Json并将其发送到线路。您可以做什么,但确实需要一些管道工作,在您将它发送到客户端之前修剪服务器上的'jsonized'CSDL,即类似的东西。

[HttpGet]
public String Metadata() {
  var metadata = ContextProvider.Metadata();
  // trim the metadata here
  // metadata = trimMetadata(metadata);
  return metadata;
}

如果您不是通过EF或者愿意在服务器上的代码中“手动”构建元数据,那么这不是问题,Breeze将接受CSDL元数据或我们称之为Breeze本机元数据的元数据调用的有效返回。此处描述了本机元数据格式:Breeze Metadata

在这种情况下,您可以创建元数据来描述您想要公开的模型的少量或多少。

Breeze为修剪CSDL元数据提供更多自动化机制的想法确实很有意义。如果您认为这会有所帮助,可以将其作为请求添加到Breeze User Voice。我们非常重视这个场所,以确定要关注哪些功能。