实体未在UpdateAsync上传递

时间:2014-09-24 05:49:01

标签: json windows-phone-8.1 azure-mobile-services

目前我可以完美地插入和查找实体,但是当我这样做时

await myTable.UpdateAsync(entity);

它正确进入相应的TableController但没有实体传递,每个字段都为null或其MinValue。

我可以将同一个实体放入

await myTable.InsertAsync(entity);

所有变量都在另一端正确传出。

只是为了添加更多信息,我最初是通过

获取实体
Entity entity = await myTable.LookupAsync(id);

然后我更新此实体的值并将其传递给UpdateAsync

我的移动应用上的实体定义是

    public Guid Id { get; set; }

    public String firstName { get; set; }

    public String lastName { get; set; }

    public DateTime added { get; set; }

    [Microsoft.WindowsAzure.MobileServices.Version]
    public string Version { get; set; }

    public DateTimeOffset CreatedAt { get; set; }

    public DateTimeOffset? UpdatedAt { get; set; }

    public bool Deleted { get; set; }

TableController中的实体定义是相同的,唯一的区别是我没有指定CreatedAt,UpdatedAt,Deleted和Version,因为它们是我继承的EntityData的一部分。

在TableController端,这里有关于补丁的更多信息。

patch.GetUnchangedPropertyNames().ToList();
Count = 5
    [0]: "added"
    [1]: "firstName"
    [2]: "lastName"
    [3]: "Version"
    [4]: "CreatedAt"
patch.GetChangedPropertyNames().ToList();
Count = 3
    [0]: "Id"
    [1]: "UpdatedAt"
    [2]: "Deleted"

我也尝试将Id更改为字符串并删除两端的DateTime,但firstName和lastName永远不会通过。

由于更多的调试(根据我的评论),我更正了我的陈述,并说它在TableController端。它不接受布尔人以外的其他任何东西。

动态视图将显示DateTime或Int32但不显示String。例如,我向我的实体添加了一个整数属性,并通过

发送
{
   "Deleted":"false",
   "test":123,
   "firstName":"test"
}

但这是我在控制器中得到的结果。

enter image description here

只需注意,我可以将Deleted更改为true并正确反映。

0 个答案:

没有答案