odata - SAPUI5 OData 模型中的应用程序数据如何写回后端系统

标签 odata backend sapui5

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

方案 1:

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

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

用户操作输入字段、下拉列表、表格等,所有数据通过 createEntry() 或 setProperty() 写入 Odata 模型。对?或者我应该使用另一个 JSONModel 并收集所有用户更改?

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

方案 2:

双向绑定(bind)中的 Odata ?

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

你看我有点困惑。

最佳答案

如果您使用单向或双向绑定(bind),重要的是要知道您会得到什么。这些绑定(bind)实际上都不涉及将数据写回后端 OData 服务。

简而言之:

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

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

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

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

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

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

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

    关于odata - SAPUI5 OData 模型中的应用程序数据如何写回后端系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673364/

    相关文章:

    entity-framework - 如何使用 OData 在单个 POST 请求中正确创建和链接一对一关系

    c# - ASP.NET WebAPI OData 406

    wcf - oData WCF 数据服务过滤器子集合

    node.js - NodeJS 的 OData

    backend - 具有用户特定数据的对话流

    带有服务器后端的 iPhone 应用程序 - 如何确保所有访问仅来自 iPhone 应用程序?

    ios - 移动推送通知服务之间的比较

    javascript - 从 oTable.bindItems 捕获 oData 错误

    sapui5 - 如何做成长表/列表

    javascript - 如何对 SAPUI5 控件的 onBeforeRendering 进行单元测试?