Skip to main content Link Search Menu Expand Document (external link) Copy Copied

ComplexType

如果需要用到一些复杂的数据类型,可以定义ComplexType。如果把EntityType看作是数据库的表,那ComplexType可以看作Java Bean。

<Schema>
    <ComplexType Name="TestObjectOne">
        <Property Name="testObjectOneId" Type="Edm.String" Nullable="false"/>
        <Property Name="amount" Type="Edm.Decimal" Nullable="false"/>
        <Property Name="testDate" Type="Edm.DateTimeOffset"/>
    </ComplexType>
    <Action Name="testImportActionComplex">
        <Parameter Name="partyId" Type="Edm.String"/>
        <Parameter Name="otherParam" Type="Edm.String"/>
        <ReturnType Type="com.dpbird.TestObjectOne"/>
    </Action>
    ...
</Schema>

POST http://server/odata.svc/testImportActionComplex

{
  "partyId": "admin",
  "otherParam": "9999"
}

返回结果

{
  "@odata.context":"$metadata#com.dpbird.TestObjectOne",
  "@odata.metadataEtag":"1663051319573",
  "testObjectOneId":"10030",
  "amount":10,
  "testDate":"2022-09-13T07:17:36.718Z"
}

以上只是一个简单的例子,实际项目中,EnumType和ComplexType,可以用在EntityType的Property,Function和Action的Parameter,Function和Action 的ReturnType,也可以用在ComplexType的Property中。