JayData 1.5.1是否支持可以包含具有继承层次结构的元素的多态集合?
我有一个OData v4服务,它包含一个多态集合。该服务使用asp.net WebApi 2.2和OData 5.8实现。该集合包含适当的$odata.type元数据,该元数据指示派生类型,并且服务本身似乎按预期工作。
我已经在数据模型中声明了一个实体基类型和派生类型,并且该集合在数据上下文中声明为elementType设置为基实体类型的集合。
查询此集合时,JayData似乎只为集合的每个成员创建基类型实体,而忽略$odata.type元数据。有没有一种方法可以指示JayData为多态集合创建适当的派生实体类型?
此外,与上述内容相关,当我查询集合时,我需要扩展元素的子集合,这些元素只与派生类型之一相关,而与基类型无关。在OData中,这是使用类似于以下的$expand来完成的:
$expand=我的。模型派生类型/子集合
有没有办法将其添加到查询的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。元数据模型和表达式解析器确实支持它,但查询生成器不知道类和子类。由于继承是Microsoft Graph API的基础,我们决定将下一个版本(1.6)用于此版本,而不会推迟其他V4功能的发布。