【问题标题】:How to address entity that uses composite identity key in OData Url?如何处理 OData Url 中使用复合身份密钥的实体?
【发布时间】:2012-09-12 14:41:14
【问题描述】:

我有一个具有 OrderIdProductId 整数字段的 entity OrderItem,这两个字段构成 身份键/主键 用于此表。
我想使用 OData/Web API 通过服务公开这些实体,并能够通过它们的复合 ID 选择 OrderItem 实例。

URL 的格式应该是什么?

是否有处理此类情况的最佳做法?

【问题讨论】:

    标签: url entity odata asp.net-web-api composite-primary-key


    【解决方案1】:

    URL 中的复合键使用如下语法:

    ~/OrderItems(OrderId=1234,ProductId=1234)
    

    “语法”在OData ABNF Construction Rules 中定义(参见“compoundKey”的定义)

    可以在 OASIS 的OData Version 4.0. Part 2: URL Conventions Plus Errata 03 中找到示例用法

    请注意,“复合键”(又名“复合键谓词”)一直在 since OData 1.0 附近。

    【讨论】:

      【解决方案2】:

      首先,您必须确保在配置文件中明确提及它具有复合键

      builder.EntityType<OrderItem>().HasKey(t => new { t.OrderId, t.ProductId});
      

      那么,动作应该有以下标题

      public SingleResult<OrderItem> Get([FromODataUri] string keyOrderId, [FromODataUri] string keyProductId)
      

      请注意两个参数使用的前缀(key)!

      这是 OData V4。另请参考https://odata.github.io/WebApi/13-06-KeyValueBinding/

      【讨论】:

        猜你喜欢
        • 2013-06-02
        • 1970-01-01
        • 2011-01-03
        • 2019-04-04
        • 2021-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多