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