我有以下型号:
public class Field
{
public string Name { get; set; }
public int Order { get; set; }
public int FieldGroupId { get; set; }
}
public class FieldGroup
{
public string Name { get; set; }
public int Order { get; set; }
public virtual ICollection<Field> Field { get; set; }
}
我想要做的是一个查询,我可以先由小组然后按字段订购,例如:
http://localhost:44300/API/odata/IntFieldSet?$count=true&$expand=FieldGroup&$orderby=FieldGroup/Order,Order
然而,当我尝试它时,我收到以下错误:
Duplicate property named 'Order' is not supported in '$orderby'.
虽然它们具有相同的名称,但它们不是同一个字段。如果我按照不同名称的字段或每次只使用其中一个字段进行排序,则可以正常工作。例如:
$orderby=FieldGroup/Order,Name || $orderby=FieldGroup/Order || $orderby=Order
它曾经在odata v3上工作但不再使用odata v4。
之前有人遇到过这个问题。你能帮我找一个解决方案吗?
提前致谢。
答案 0 :(得分:1)
我使用WebAPI OData 5.6和5.7有同样的问题。 但是他们说他们在版本WebAPI Odata 5.7中修复了它:https://github.com/OData/WebApi/issues/376 将等待更新的发布。
答案 1 :(得分:0)
现在修好了。 正确的查询应该类似于:
{
"size": 0,
"aggs": {
"count": {
"nested": {
"path": "attributes"
},
"aggs": {
"attribCount": {
"terms": {
"field": "attributes.name"
}
},
"attribVal": {
"terms": {
"field": "attributes.name"
},
"aggs": {
"attribval2": {
"terms": {
"field": "attributes.value"
}
}
}
}
}
}
}
}
将粗略地转化为:
http://localhost:44300/API/odata/IntFieldSet?$count=true&$expand=FieldGroup&$orderby=FieldGroup/Order asc,Order desc
以下是odata.org的一个例子:
http://services.odata.org/TripPinRESTierService/Airports?$的OrderBy =名称%20asc,%20Location /地址%20desc