在Web API中使用无类型实体对象支持时的OData空导航属性

时间:2014-01-26 08:47:17

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

我有两种类型Person和Honorific,它们之间有0..1到很多关系。我正在使用queryOptions.request.SetSelectExpandClass来支持扩展,当有一个Honorific时,它可以完美地扩展Honorific。

当没有Honorific时,我需要Json有效载荷包括Honorific =(null)。在那种情况下,我从TryGetPropertyValue返回一个null,但是Json序列化器完全省略了对Honorific的任何引用,它应该插入Honorif =(null)。关于如何实现这一点的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为OData不允许集合的值为null 空集合由WebAPI处理,它将在序列化期间忽略空集合 我认为这是WebAPI中的一个错误,在序列化过程中应将空集合视为空集合。

检查WebAPI打击的源代码:
对于OData V3: \src\System.Web.Http.OData\OData\Formatter\Serialization\ODataEntityTypeSerializer.cs:WriteExpandedNavigationProperty
对于OData V4: \src\System.Web.OData\OData\Formatter\Serialization\ODataEntityTypeSerializer.cs:WriteExpandedNavigationProperty