如何使用WCF和OData公开继承的实体?

时间:2013-05-20 06:15:38

标签: wcf inheritance odata

如果我有一个由WCF数据服务公开的OData继承层次结构,我如何将子类实体公开为它自己的实体集?我应该使用什么URI来访问它?

假设我有一个OData网址如下:

http://myodataservice.svc

假设我有一个抽象的实体foo和一个foo子类的实体栏。

我想要做的是访问网址http://myodataservice.svc/bar以访问条形对象,但似乎无法做到这一点。任何人都能指出一个简单的例子,所以我可以看到它是如何工作的吗?

1 个答案:

答案 0 :(得分:4)

每个实体实例只能属于一个实体集。因此,您可以拥有多个共享相同类型(或基本类型)的实体集,但它们的实体实例集不得重叠。 如果您需要一个包含基类型的所有实体实例的实体集,但仍希望某些时候只访问某个派生类型的实体实例,则可以使用类型转换路径段。

这需要OData V3,但是你可以这样做:

http://myodataservice.svc/baseentities/Namespace.DerivedType

此URL的作用类似于基本实体集中的实体实体集,但仅过滤为DerivedType实例。它也是强类型的(该URL的类型是DerivedType实例的集合)。所以你可以像任何其他实体集URL一样使用它,也就是说你可以使用/进一步导航,或者你可以附加任何查询运算符,如$ filter,$ select等。