0

我只是想知道是否有任何方法可以轻松地从项目中的微风控制器中删除元数据响应中的实体。很简单,类似于 JsonIgnore 属性,可以添加到实体元数据中以排除特定属性(或至少与它们相关的数据)。

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

4

1 回答 1

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中。我们非常重视这个场地,以确定要关注哪些功能。

于 2013-06-20T17:21:30.970 回答