2016-06-07 49 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

謝謝,爲我澄清了很多。很好的書面和解釋。 –

相關問題