我试图使用模拟服务器将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"
}
]
但它看起来像这样:
当我添加Key
时:
<EntityType Name="Equipment" BaseType="GWSAMPLE_BASIC.EquipmentBO">
<Key>
<PropertyRef Name="id"/>
</Key>
<Property Name="id" Type="Edm.String"/>
</EntityType>
工作正常:
另外,我发现createKey
也会产生错误:
ODataModel-dbg.js:2005 Uncaught TypeError:无法读取属性&#39; propertyRef&#39;未定义的
this.getModel().createKey("EquipmentSet", {
id : "111"
});
所以我的问题是,我可以在不更改oData元数据的情况下修复此问题吗?密钥已在BaseEntityBO
中定义。
答案 0 :(得分:1)
此问题与openui5问题#951重复。
不幸的是,datajs,我们在SAPUI5中使用的OData库,不支持派生实体类型。由于这是一个很少使用的功能,目前没有计划支持这一功能。
看来这个问题只能通过后端服务来解决。