在Odata中查询嵌套字典

本文关键字:嵌套 字典 查询 Odata | 更新日期: 2023-09-27 18:00:27

我有下面的类,它通过GET调用公开为oData服务

class Book
{
    public string Id {get; set;}
    public string Name {get; set;}
    public Dynamicproperties Dictionary<string,object> {get; set;}
}

假设Book的对象包含以下数据

new Book
{
   Id="1",
   Name = "oData",
   new Dictioanry<string,object>
   {
       { "chapter1", 
         new Dictionary<string,object>
         {
           "page1",
            new Dictionary<string,object>
            {
                "topic", "introduction"  
            }
         }
      }
   }
}

我可以理解用户可以像那样查询Book的属性http://localhost:1234/Books('1')/Name并支持在这个查询中,我需要在BooksController中为这些属性设置getter。但是用户如何查询嵌套字典中的属性呢。假设用户想知道的值第1章第1页的主题,用户如何查询?。我应该做些什么来支持该查询?。我想不通。如果有任何帮助,我将不胜感激。

在Odata中查询嵌套字典

我认为Web API OData现在不支持嵌套字典。实际上,

公共字典动态属性{get;set;}

是一个容纳动态属性的容器。目前,动态特性可以是OData中定义的结构特性之一。

正如OData规范所说:

4.3结构特性

结构属性是具有以下类型之一的(结构类型的)属性:

·原始类型

·复杂型

·枚举类型

·上述之一的集合

希望能有所帮助。谢谢