2016-06-07 47 views
1

我对Odata主题颇为陌生,并试图了解在使用OData服务时最佳实践场景是什么。SAPUI5 OData模型中的应用程序数据如何写回到后端系统

Sceanrio 1:

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

首先假设ODATA是单向的装订:

用户操纵inputFields,下拉列表,表格等,所有的数据被writen到ODATA模型createEntry()或setProperty()。对?或者我应该使用另一个JSONModel并收集所有用户更改?

问题:我现在如何将Odata模型上所做的更改转移到后端?什么是最好的practive我读过一些关于批处理或有自己的服务,并用create()函数触发它?有人可以提供一些提示或某种配方。

Sceanrio 2:

Odata in Two-Way Binding?

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

你看我有点困惑。

回答

9

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

简而言之:

  • 单向结合意味着模型(例如ODataModel)只让你的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功能(例如批量和双向绑定)。

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

+0

谢谢,为我澄清了很多。很好的书面和解释。 –

相关问题