子派生属性上的OData v4 $ orderby

时间:2018-08-02 16:38:59

标签: odata odata-v4

我有以下情况:

 args = argparse.Namespace(querysearch='foo', maxtweets=4, output='afile', since=4)

查询住宿时,我希望按PersonGuest / SurName订购。

我知道如何通过子属性public class Stay { [Contained] public Guest PrimaryGuest {get;set;} } public abstract class Guest { public int ID {get; set;} } public class EntityGuest : Guest { public string EntityName {get;set;} } public class PersonGuest : Guest { public string SurName {get;set;} public string GivenName {get;set;} } 进行排序-但是如何对派生的子属性进行排序?可能吗我无法通过OData文档确定它-至少没有被包含的实体调用。

1 个答案:

答案 0 :(得分:0)

在类似的情况下,此答案对我有很大帮助:oData $expand on Derived Types

基本上,您可以使用为模型定义的名称空间(而不是模型名称)添加正斜杠和 model 类型的限定名称来“转换”查询中任何复杂或实体类型的属性。 .Net全名。

[URL]/Stays?$expand=PrimaryGuest&$orderby=PrimaryGuest/ModelNamespace.PersonGuest/Surname

如果不确定模型名称空间,请查看模型构建器代码,或使用类似的代码:

        ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
        builder.Namespace = "MyAppModel";

然后您的网址应如下所示:

[URL]/Stays?$expand=PrimaryGuest&$orderby=PrimaryGuest/MyAppModel.PersonGuest/Surname