如果我有一个由WCF数据服务公开的OData继承层次结构,我如何将子类实体公开为它自己的实体集?我应该使用什么URI来访问它?
假设我有一个OData网址如下:
假设我有一个抽象的实体foo和一个foo子类的实体栏。
我想要做的是访问网址http://myodataservice.svc/bar以访问条形对象,但似乎无法做到这一点。任何人都能指出一个简单的例子,所以我可以看到它是如何工作的吗?
答案 0 :(得分:4)
每个实体实例只能属于一个实体集。因此,您可以拥有多个共享相同类型(或基本类型)的实体集,但它们的实体实例集不得重叠。 如果您需要一个包含基类型的所有实体实例的实体集,但仍希望某些时候只访问某个派生类型的实体实例,则可以使用类型转换路径段。
这需要OData V3,但是你可以这样做:
http://myodataservice.svc/baseentities/Namespace.DerivedType
此URL的作用类似于基本实体集中的实体实体集,但仅过滤为DerivedType实例。它也是强类型的(该URL的类型是DerivedType实例的集合)。所以你可以像任何其他实体集URL一样使用它,也就是说你可以使用/进一步导航,或者你可以附加任何查询运算符,如$ filter,$ select等。