Jaydata - 支持 OData v4 中的多态集合

Jaydata - support for polymorphic collections in OData v4

JayData 1.5.1 是否支持可以包含具有继承层次结构的元素的多态集合?

我有一个包含多态集合的 OData v4 服务。该服务是使用 asp.net WebApi 2.2 和 OData 5.8 实现的。该集合包含适当的 $odata.type 元数据,指示派生类型,并且服务本身似乎按预期工作。

我已经在我的数据模型中声明了一个实体基类型和派生类型,并且该集合在数据上下文中被声明为一个 elementType 设置为基实体类型的集合。

查询此集合时,JayData 似乎只为集合的每个成员创建基本类型实体,而忽略了 $odata.type 元数据。有没有办法指示 JayData 为多态集合创建适当的派生实体类型?

此外,与上述相关,当我查询集合时,我需要扩展元素的子集合,这些元素仅与一种派生类型相关,而不与基类型相关。在 OData 中,这是使用类似于以下内容的 $expand 完成的:

$expand=My.Model.DerivedType/ChildCollection

有没有办法将其添加到查询的 JayData 'include' 部分?

下面是一个具有一定代表性的示例数据模型:

    types["My.Model.BaseType"] = $data.Entity.extend("My.Model.BaseType", {
...
});
    types["My.Model.Child"] = $data.Entity.extend("My.Model.Child", {
...
});
    types["My.Model.DerivedType"] = types["My.Model.BaseType"].extend("My.Model.DerivedType", {
...
        ChildCollection: {
            "type": "Array",
            "elementType": "My.Model.Child",
            "inverseProperty": "$$unbound"
        }
});

exports.type = types["MyData.Container"] = $data.EntityContext.extend("MyData.Container", {

        PolymorphicCollection: {
            "type": "$data.EntitySet",
            "elementType": "My.Model.BaseType"
        },
});

谢谢,

杰夫

免责声明:我在 JayData 团队工作

继承类无法进入1.5。元数据模型和表达式解析器确实支持它,但查询构建器不知道 类 和 sub类。由于继承是 Microsoft Graph API 的基础 - 我们决定将下一个版本 (1.6) 专门用于它 - 而不是等待其他 V4 功能的发布。