【问题标题】:Breeze issues with WebApi 2 ODataConventionModelBuilder metadataWebApi 2 ODataConventionModelBuilder 元数据的微风问题
【发布时间】:2014-06-04 01:34:14
【问题描述】:

我目前正在使用 EF6 和代码优先方法开发 OData Web API 2 服务。

微风文档建议使用 EdmBuilder 而不是 ODataConventionModelBuilder 有多种原因 (http://www.breezejs.com/documentation/odata-server)。我对此有几个问题-:

1) ODataConventionModelBuilder 似乎没有生成“ReferentialConstraint”标签,因此在使用微风 js 客户端 $expand 之后对 $select 产生了影响。但奇怪的是,当直接在浏览器中输入(使用 $expand 和 $select)时,似乎同样有效,使用 ODataConventionModelBuilder 有什么解决方法吗?链接中所述的所有问题是否仍然适用?

2) 我们选择了纯 OData 服务,以使我们的 API 可供各种 OData 消费者访问,我们希望保持我们的服务通用性,而不会带来任何微风。添加 EdmBuilder 是否会使服务变得轻而易举?

【问题讨论】:

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


    【解决方案1】:

    您发现 Microsoft 的 ODataConventionModelBuilder 不提供参考约束。到目前为止,使用 EdmBuilder 是唯一的解决方法。使用 EdmBuilder 不会使服务变得轻而易举,因为那里没有轻而易举的特定代码。 (EdmBuilder 的代码实际上是由 Microsoft 工程师提供的。)但是,使用 EdmBuilder 确实会妨碍您使用 ODataConventionModelBuilder 的其余功能,这很烦人。

    我们正在考虑的是,允许通过一系列 api 调用修改/更新从服务器传递的 OData 元数据,您可以在其中直接在客户端上声明关系约束强>。然后,您将使用 ODataConventionModel 构建器而不是 EdmBuilder 并使用“新”api 来“重置”约束。这显然不如从服务器检索数据,但在 MS 修复 ODataConventionModelBuilder 之前,这可能是我们最好的选择。

    这在您的场景中是否有价值?

    另外,请联系 MS,让他们知道您的不满。 :)

    【讨论】:

    • Jay,到目前为止,使用 EdmBuilder 听起来是一个更好的选择。 EdmBuilder 是否也有助于解决您网站中所述的其他问题 - 即交易、批量保存和保存订单。
    • Jay,除了上面的问题 - 奇怪的是,我只使用普通的 datajs 我可以像 /odata/Categories(1)?$expand=Products&$select=Products 这样的查询进行服务制作使用 ODataConventionModelBuilder。相同的查询通过微风返回“未找到属性错误”。现在我很困惑:(
    • 我们并不是说 Web API OData 不能返回相关数据的图表。我们是说它不提供 Breeze 需要维护关系的参考信息 (FK)。使用直接 data.js,您可以发出扩展查询并接收嵌套在 Category 结果中的相关数据。但是,这些返回的数据不是实体,并且Category.Products 数组不会被客户端上的任何设备维护(例如,后续添加或删除)......正如您所期望的那样,如果它被管理微风。
    • 模型构建器 - 无论是 ODataConventionModelBuilder 还是 EdmBuilder - 将模型描述为 OData,并且是客户端元数据的来源。它与 OData 如何处理批量保存请求无关。这是由batchHandler 处理的。今天发布的唯一 batchHandlerDefaultODataBatchHandler ... 在我们在文档中描述的所有方式中都缺少它。恐怕这些问题的解决方案将采取由 MS 或其他人编写的不同 batchHandler 的形式,或者可能是完全不同的 Web API OData 管道。我们可以希望:-)
    • 基于 cmets,我们决定使用 EdmBuilder,因为使用它应该有助于我们使用 Breeze 提供的功能。 +1 超快速响应。希望 MS 很快就会推出 ODataConventionModelBuilder 的修正版本,祈祷:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多