【问题标题】:SAPUI5 Application Data in OData Model how to write back to backend systemOData模型中的SAPUI5应用程序数据如何写回后端系统
【发布时间】:2016-10-07 00:02:44
【问题描述】:

我对 OData 主题非常陌生,并尝试了解使用 OData 服务时的最佳实践方案是什么。

场景1:

我有一个复杂的应用程序,其中包含来自远程 Odata 模型的多个 EntitySet,该模型是从 SAP 后端加载的。我可以读取数据并将其绑定到 UI 控件,这不是问题,但我很困惑的是我可以/应该如何将数据写回后端。

第一个假设 Odata 是单向绑定:

用户操作inputFields、dropdowns、tables等,所有数据通过createEntry()或setProperty()写入Odata Model。正确的?或者我应该使用另一个 JSONModel 并收集所有用户更改?

问题:我现在如何将在 Odata 模型上所做的更改传输到后端?我读过有关批处理或拥有自己的服务并使用 create() 函数触发此服务的最佳实践是什么?有人可以提供一些提示或某种食谱吗?

场景2:

双向绑定中的 Odata ?

它是如何工作的?后端必须在 OdataServices 中提供哪些先决条件?我读过一些实验性的东西。

你看我有点困惑。

【问题讨论】:

    标签: odata backend sapui5


    【解决方案1】:

    如果您使用单向或双向绑定,了解您将获得什么非常重要。这些绑定实际上都不涉及将数据写回后端 OData 服务。

    简而言之:

    • 单向绑定意味着模型(例如 ODataModel)只使您的 UI 控件保持同步。对模型所做的更改也将级联到绑定到模型的 UI 控件。但是,当您更改 UI 控件中的值时,更新后的值不会自动写回模型。
    • 双向绑定意味着模型使您的 UI 保持同步(类似于单向绑定),但最重要的是,您的 UI 控件的更改也会级联回模型。双向绑定

    在单向模型中,您确实需要使用 createEntry 和 setProperty 方法以编程方式更新模型。使用双向绑定,这将自动为您完成。

    如果您希望将模型更改写回服务器上的 OData 服务,您可以运行“submitChanges”方法。此方法会查看 ODataModel 中所做的所有更改,并将相应的 OData 请求发送到服务器以与后端同步更改。

    为确保以一致的方式完成此操作,ODataModel 会将所需的更改包装到所谓的更改集中。然后后端知道哪些请求属于一起,并且只要其中一个更改失败,就能够回滚更改集中的所有更改。在 ABAP 中,您可以将其称为逻辑工作单元 (LUW)。

    因为可能需要向服务器发送多个请求(例如,如果更改集更改了多个实体),ODataModel (v2) 将尽可能多的请求分组在一个批次中。当它打开时(这是默认设置),只向服务器发送一个请求而不是多个请求,这会提高性能。建议仅出于调试目的关闭批处理。

    请注意,sap.ui.model.odata.ODataModel 中的双向绑定曾经是实验性的,但请不要再使用该类,因为它已经过时了。请改用 sap.ui.model.odata.v2.ODataModel,因为它更好并且支持更多 OData 功能(例如批处理和双向绑定)。

    这实际上是多个答案,但我希望它能澄清一些困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多