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

Fra*_*zzo 4 backend odata sapui5

我对Odata主题很陌生,并尝试了解使用OData服务时的最佳实践场景.

Sceanrio 1:

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

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

用户操作inputFields,dropdown,tables等,并使用createEntry()或setProperty()将所有数据写入Odata模型.对?或者我应该使用另一个JSONModel并收集所有用户更改?

问题:如何将Odata模型上的更改转移到后端?什么是最好的实践我已经阅读了有关批处理或拥有自己的服务的东西,并使用create()函数触发这个?有人可以提供一些提示或某种食谱.

Sceanrio 2:

双向绑定中的Odata?

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

你看我有点困惑.

jpe*_*hof 11

如果您使用单向或双向绑定,了解您将获得的内容非常重要.这些绑定实际上都不涉及将数据写回后端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功能(例如批处理和双向绑定).

这实际上是一个多个答案,但我希望它澄清一些混乱.