目前我可以完美地插入和查找实体,但是当我这样做时
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"
}
但这是我在控制器中得到的结果。
只需注意,我可以将Deleted更改为true并正确反映。