在Odata中查询嵌套字典

时间:2015-06-30 14:32:09

标签: c# asp.net-web-api odata

我有下面的类,它通过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页的主题,用户如何查询?我该怎么做才能支持该查询?我无法理解。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

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

  

public Dictionary Dynamicproperties {get;设置;}

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

正如OData spec所说:

4.3结构属性

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

·原始类型

·复杂类型

·枚举类型

·以上

之一的集合

希望它可以提供帮助。感谢。