Odata $展开了一个null对象的集合

时间:2017-07-12 22:32:21

标签: c# asp.net .net rest odata

我和odata $expand有一个奇怪的错误。如果我展开空对象的集合,我会收到错误

  

"值不能为空"

这是我的疑问:

GET  localhost/OData/Location(10)/?$expand=position($expand=area($expand=points))

此查询生成错误

  

"值不能为空"

不应该将stop扩展到第一个null对象吗? 这里的区域为空。

我的课程是这样的:

Location 
    - Position 
        - Area 
            - Anchor
            - ICollection<Points>

Location
{
    public Position position { get; set; }
}

Position
{
    public Area area { get; set; }
}

Area
{
    public Anchor anchor  { get; set; }
    public ICollection<Points> points { get; set; }
}

对于我的数据库中的此位置ID=10,该位置不为空,位置IS NOT NULL但区域为IS NULL。 这就是为什么我的查询:

localhost/OData/Location(10)?$expand=position($expand=area($expand=points))

将生成该错误。
但似乎只有在展开null对象的集合时才会出现问题,因为如果我展开Anchor对象:

GET localhost/OData/Location(10)/?$expand=position($expand=area($expand=anchor)) 

然后正确扩展位置并且扩展在Area处停止 - 所以在json中我得到&#34; area&#34;:null,没有错误,但扩展点集合崩溃。

我们前端团队的要求是让对象完全展开,因此他们将发送一个查询,其中包含所有子对象和子集合。
任何人都知道为什么$expand也不会停止收藏?

0 个答案:

没有答案