我有以下情况:
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文档确定它-至少没有被包含的实体调用。
答案 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