我可以定义EntityType但不能将其用作Feed吗?

时间:2018-10-02 04:08:54

标签: odata olingo

我正在使用Odata / Olingo v2。我定义了几种实体类型,包括ProductCategory。一个Product可以有多个Categories

我只想将Products用作Feed /资源。我以为可以通过定义Category实体类型和关联来实现此目的,但不添加Categories EntitySetAssociationSetEntityContainer。我还在NavigationPropertyProduct之间创建了一个Category

这似乎是有效的EDMX,至少Olingo的EdmxProvider.parse()不反对。但是,当我在集合Product中向集合Categories发送Products的{​​{1}}时,Olingo抛出了EdmEntityContainerImplProv.getAssociationSet()的异常,因为它希望找到一个AssociationSet Categories

在OData / Olingo v2中有没有办法做到这一点?

编辑:将Category设为ComplexType并不是一种选择,因为我需要收集它们的集合,而在OData / Olingo v2中是不可能的

1 个答案:

答案 0 :(得分:1)

我不熟悉olingo的实现,因此无法将您指向任何方法。

但是一般来说:如果您希望一个实体作为一个集合(无论是/Product('123')/ToCategories还是/CategorySet都可以访问),则需要在元数据和实现中使用相应的EntitySet。

但是,通过导航属性使用时,可以将实现限制为仅 响应。

例如:在Abap实现中,实现类别get_entityset的方法具有以下信息:可以通过导航属性从另一个包含键的实体(甚至是路径)访问该信息。如果您决定不想直接访问/CategorySet

,则可以在此处引发异常或仅返回空集