数据绑定在oData BaseType中不起作用

时间:2017-09-11 08:51:26

标签: odata sapui5

我试图使用模拟服务器将oData绑定到我的List。

我的metadata.xml是

<edmx:Edmx
    xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"
    Version="1.0">
    <edmx:DataServices m:DataServiceVersion="2.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
        <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="GWSAMPLE_BASIC" xml:lang="en">
            <EntityType Name="Equipment" BaseType="GWSAMPLE_BASIC.EquipmentBO">
            </EntityType>   
            <EntityContainer Name="DefaultContainer" m:IsDefaultEntityContainer="true">
                <EntitySet Name="EquipmentSet" EntityType="GWSAMPLE_BASIC.Equipment"/>
            </EntityContainer>
            <EntityType Name="EquipmentBO" BaseType="GWSAMPLE_BASIC.BaseEntityBO">
                <Property Name="code" Type="Edm.String" Nullable="true"></Property>
            </EntityType>
            <EntityType Name="BaseEntityBO" Abstract="true">
                <Key>
                    <PropertyRef Name="id"></PropertyRef>
                </Key>
                <Property Name="id" Type="Edm.String"/>
            </EntityType>
        </Schema>
    </edmx:DataServices>
</edmx:Edmx>   

Equipment.json:

[
  {
    "id": "1"
  },
  {
    "id": "2"
  },
  {
    "id": "3"
  }
]

但它看起来像这样:

enter image description here

当我添加Key时:

<EntityType Name="Equipment" BaseType="GWSAMPLE_BASIC.EquipmentBO">
    <Key>
        <PropertyRef Name="id"/>
    </Key>
    <Property Name="id" Type="Edm.String"/>
</EntityType> 

工作正常:

enter image description here

另外,我发现createKey也会产生错误:

  

ODataModel-dbg.js:2005 Uncaught TypeError:无法读取属性&#39; propertyRef&#39;未定义的

this.getModel().createKey("EquipmentSet", {
    id :  "111"
});

所以我的问题是,我可以在不更改oData元数据的情况下修复此问题吗?密钥已在BaseEntityBO中定义。

1 个答案:

答案 0 :(得分:1)

此问题与openui5问题#951重复。

  

不幸的是,datajs,我们在SAPUI5中使用的OData库,不支持派生实体类型。由于这是一个很少使用的功能,目前没有计划支持这一功能。

看来这个问题只能通过后端服务来解决。