为了理解 OData <-> SAP Cloud Platform 链接,我使用适用于 Node.js 的 Jaystack OData V4 服务器 ( https://jaydata.org/jaystack-odata-v4-server ) 库开发了自己的最小 OData 服务.
首先,我添加了一个属性 - “ID”。
这是元数据文件:
<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Northwind">
<EntityType Name="Repair">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.String" Nullable="false">
<Annotation Term="Org.OData.Core.V1.Computed" Bool="true"/>
<Annotation Term="UI.DisplayName" String="ZSRE Return Document Number"/>
<Annotation Term="UI.ControlHint" String="ReadOnly"/>
</Property>
</EntityType>
<EntityContainer Name="DefaultContainer">
<EntitySet Name="Repair" EntityType="Northwind.Repair"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
当我使用此服务作为目标生成应用程序时,一切正常:
一旦我尝试向我的 OData 模型添加另一个属性 - 例如“myOtherProperty”,我在重新生成和运行应用程序时收到以下消息:
当我查看服务中的原始 JSON 时,它抱怨缺少的属性“myOtherProperty”显然在那里:
{"@odata.context":"http://localhost:3000/$metadata#Repair","value":[{"@odata.id":"http://localhost:3000/Repair('5065879381')","ID":5065879381,"**myOtherProperty**":2311671387},{"@odata.id":"http://localhost:3000/Repair('7651842623')","ID":7651842623,"**myOtherProperty**":3928577920}]
这是更新的架构:
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Northwind">
<EntityType Name="Repair">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.String" Nullable="false">
<Annotation Term="Org.OData.Core.V1.Computed" Bool="true"/>
<Annotation Term="UI.DisplayName" String="ZSRE Return Document Number"/>
<Annotation Term="UI.ControlHint" String="ReadOnly"/>
</Property>
<Property Name="myOtherProperty" Type="Edm.Int32"/>
</EntityType>
<EntityContainer Name="DefaultContainer">
<EntitySet Name="Repair" EntityType="Northwind.Repair"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
知道为什么 SDK 会抱怨缺少属性吗?似乎对于其他示例 OData 服务,这似乎不是问题,所以我猜它与操纵杆库有关,或者可能是一个小怪癖。
任何帮助将不胜感激!