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

时间:2016-05-10 14:11:46

标签: odata jaydata

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

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

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

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

此外,与上述相关,当我查询集合时,我需要扩展仅与其中一个派生类型相关的元素的子集合,而不是基本类型。在OData中,这是使用$ 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"
        },
});

谢谢,

杰夫。

1 个答案:

答案 0 :(得分:1)

免责声明:我与JayData团队合作

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