我有一个具有OrderId和ProductId整数字段的实体 OrderItem ,这两个字段形成了该表的身份键/主键。
我想使用OData/Web API通过服务公开此类实体,并能够通过它们的复合 ID选择OrderItem实例。
URL的格式应该是什么?
是否有处理此类情况的最佳实践?
我有一个具有OrderId和ProductId整数字段的实体 OrderItem ,这两个字段形成了该表的身份键/主键。
我想使用OData/Web API通过服务公开此类实体,并能够通过它们的复合 ID选择OrderItem实例。
URL的格式应该是什么?
是否有处理此类情况的最佳实践?
URL 中的复合键使用如下语法:
~/OrderItems(OrderId=1234,ProductId=1234)
“语法”在OData ABNF 构造规则中定义(参见“compoundKey”的定义)
可以在 OASIS 的OData 版本 4.0 中找到一个示例用法。第 2 部分:URL 约定和勘误表 03
请注意,“复合键”(又名“复合键谓词”)自 OData 1.0 以来一直存在。
首先,您必须确保在配置文件中明确提及它具有复合键
builder.EntityType<OrderItem>().HasKey(t => new { t.OrderId, t.ProductId});
然后,该操作应具有以下标头
public SingleResult<OrderItem> Get([FromODataUri] string keyOrderId, [FromODataUri] string keyProductId)
请注意用于两个参数的前缀(键)!
这是 OData V4。另请参考https://odata.github.io/WebApi/13-06-KeyValueBinding/