我只是想知道是否有任何方法可以轻松地从我项目中的Breeze Controller中减少元数据响应中的实体。简单就像JsonIgnore属性,可以添加到实体元数据中以排除特定属性(或至少与它们相关的数据)。
我并不太关心它,但我喜欢我的代码是高效的,我可能会从面向元数据存储的客户端中删除50%的实体,因为我有很多特定于业务逻辑的实体客户端应用程序,我想在大多数情况下,我不希望将整个数据库架构的地图广播到整个世界。
答案 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。我们非常重视这个场所,以确定要关注哪些功能。