如何取消设置Delta对象上的属性

时间:2018-05-14 21:54:47

标签: c# odata azure-mobile-services delta

我使用的是Azure移动应用服务,在PATCH方法中,我收到了Delta类型的对象(请参阅MSDN)。

我收到一些带有空值的字段,我想从Delta输入对象中删除:如何执行此操作?

e.g。我有一个像

这样的JSON输入
{
    "Content":"test",
    "CreatedAt":null
    ...
}

这将映射一个继承自Microsoft.Azure.Mobile.Server.EntityData的实体 e.g。

public class MyBean : EntityData
{
    public MyBean() { }
    public string Content { get; set; }
}

我想删除字段" CreatedAt",顺便说一下,在EntityData父对象中声明了Microsoft库的一部分(因此我无法直接访问它)

2 个答案:

答案 0 :(得分:1)

我不认为您应该尝试删除CreatedAt,而是改用传入的Delta并创建一个新的。您可以包含想要的字段,也可以排除不需要的字段。

void swap(int *p, int *q){

    int tmp;

    tmp = *p;
    *p = *q;
    *q = tmp;

}

答案 1 :(得分:0)

如果您使用Newtonsoft.Json序列化实体,则可以使用属性的conditional serialization

  

要有条件地序列化属性,请添加一个返回   与属性名称相同的布尔值,然后在方法前添加前缀   以ShouldSerialize命名。方法的结果确定是否   该属性已序列化。如果该方法返回true,则   属性将被序列化,如果返回false,则该属性   将被跳过。

public class MyBean : EntityData
{
    public MyBean() { }
    public string Content { get; set; }

    public bool ShouldSerializeCreatedAt()
    {        
        return false;
        // Or you can add some condition to whether serialize the property or not on runtime 
    }
}