创建依赖于其他条目的ODataModel条目

时间:2016-12-08 16:48:29

标签: odata sapui5

这是我面临的问题:
我有一个OData服务,它为实体Category和Product提供1:n的关系。 从SAPUI5-App我想同时为Category和Product创建一个新的Entity。我使用ODataModel (v2)的createEntry-Method执行此操作。在为我的两个EntitySet使用createEntry-Method之后,我在ODataModel中为每个实体设置了一个本地Context对象。但是这两个对象仍然彼此无关。
如何告诉Product对象它属于Category对象,这样当我使用submitChanges-Method将它们提交给OData服务时它们就有了关系。 ODataModel?

编辑:主键的生成位于服务器端。因此,我从ODataModel的createEntry-Method接收的上下文对象还没有主键。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是深度插入。我们来看一个销售订单的例子。您有一个销售订单表头和销售订单行项目,应该在单个交易中同时在后端创建。因此,在数据模型中,SO Header和SO Item之间需要关联,后端逻辑需要实现CREATE_DEEP_ENTITY方法。要从SAPUI5创建它,您需要这样的东西:

var itemData = this.getModel("itemModel").getData(); //Array of items
var newSo = {
"ID": 1,                   //Header data
"Description": "test",     //Header data
"Items": itemData.itemSet  //Array of items
}

var oModel = this.getView().getModel();
oModel.create('/SalesOrderSet', newSO);

答案 1 :(得分:0)

非常好的问题!事实上,OData提供了一种名为" Content ID"的东西。 SAP Gateway甚至支持此功能,有关详细信息,请查看this beautiful blog

不幸的是,据我所知,SAPUI5目前不支持这种开箱即用。甚至有feature request on github这个我也在博客上链接。