【发布时间】:2021-11-15 10:46:00
【问题描述】:
我使用的是 OData v4,并且这些模型是使用 EdmModel Builder 为我们的 .NET Web API 配置的。
我有两个这样定义的模型:
public class Customer
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public string Category { get; set; }
public Customer OrderCustomer { get; set;}
}
这些模型都有对应的控制器,注册如下:
builder.EntitySet<Customer>("Customers")
.EntityType
.HasKey(x => x.CustomerId);
builder.EntitySet<Order>("Orders")
.EntityType
.HasKey(x => x.OrderId)
.Expand(
maxDepth: 2,
expandType: SelectExpandType.Automatic,
properties: nameof(Order.OrderCustomer));
我能够向这两个端点发出 OData 请求,如下所示:
/Customers/{Id} 和
/Orders/{Id}.
我希望当我查询Orders 时,嵌套的EntitySet Customers 将自动扩展,因为我在Order EntitySet 上设置了expandType: SelectExpandType.Automatic。但是,我无法让 CustomerOrder 属性在 Customer 上自动扩展,我必须使用扩展参数调用请求:
/Orders/{Id}?$expand=OrderCustomer.
我认为这是因为Customer 和Order 都注册为EntitySets,所以OData 期望在嵌套时提供扩展参数。有没有办法让OrderCustomer 属性自动展开(即不需要提供展开参数)?我对 OData/Edm 模型的理解非常初级,因此不胜感激。
【问题讨论】:
标签: asp.net-web-api odata