在WebAPI Breeze实现中,我可以避免暴露元数据功能吗?

时间:2014-06-13 12:41:09

标签: asp.net-web-api breeze

使用Breeze via API打开元数据功能实际上等同于公开底层数据库架构。

有没有办法避免打开元数据api调用?我试着不按照建议暴露它。我收到以下错误

查询失败元数据查询失败:/ breeze / NorthWind / Metadata;请求的资源不支持http方法' GET'。

避免暴露Breeze Metadata调用的正确方法是什么。

2 个答案:

答案 0 :(得分:2)

除了通过API获取元数据外,您还可以考虑另外几种方法:

  1. 从脚本加载元数据。使用此方法,您可以在脚本中嵌入元数据。加载脚本后,可以使用脚本中的元数据初始化Breeze EntityManager,而不是调用API。我发现这种方法对单元测试非常有用,因为不希望访问服务器。有关详细信息,请参阅Load metadata from script

  2. 使用手写的Javascript代码构建元数据以进行配置。您可能不希望为已在Entity Framework中定义的复杂数据模型执行此操作,但如果它不是约束,则它可能很有用。有关此方法的讨论,请参阅Metadata by hand

  3. 获得元数据后,您可以分别使用window.localStorageMetadataStore.exportMetadata导出和导入元数据(例如浏览器的MetadataStore.importMetadata区域)。

答案 1 :(得分:0)

您需要为Breeze提供某种元数据才能工作。如果您不想公开数据库结构,则必须手动更改生成的元数据,或者在数据库实体和要公开的数据类之间使用另一层。您可以通过数据注释生成中间层的元数据。