2

我在运行 WCF Data Services 5.5 的自托管 WCF ODATA 服务中设置了数据实体 POCO。

数据实体有几个通常为空的字符串属性。我想在它们为空时抑制这些属性的输出,以减少通过线路的数据的大小。

[DataServiceEntity]
[DataServiceKey("Id")]
public class MyData
{ 
    public string Id { get; set; }

    [System.Runtime.Serialization.DataMember(EmitDefaultValue=false)]
    public string Description { get; set; }
}

DataMember(EmitDefaultValue = false)似乎对数据实体序列化没有影响:

{
"Id":"test4",
"Description":null
}

如何说服 WCF 数据服务取消该 null 属性?

4

2 回答 2

0

你知道 ASP.NET WEB API OData 提供者吗? http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

您可以编写自己的序列化程序。(从 ODataFeedSerializer 继承) ODataEntry 类有一个称为“Properties”的键/值属性。您可以尝试清除那里的空属性。

于 2013-08-12T19:52:50.807 回答
0

它看起来如此困难的一个原因是它不是实现问题,而是规范问题。我很快浏览了 OData 规范(核心/协议和 JSON 详细/轻量级),除了在使用PATCH.

正确扫描文件可能会显示更准确的信息。

如果我是对的,那么您不想忽略这些,因为它可能会使您无法控制的客户感到困惑。如果您控制所有客户端并且您确定您将保持该控制,您可能会破解某些东西,但我会将这种破解视为不兼容的 OData 扩展(包含所有这些)。

最好的做法是验证这一点,如果相关,建议对协议的下一版本进行改进。OData 邮件列表可能会有所帮助。

于 2013-11-05T15:23:52.200 回答