借助 Azure 移动应用,我们可以在表之间同步。我正在构建具有不同目的的多个应用程序。其他应用程序不需要特定表的所有属性,只需要他需要一次。是否可以仅将表的特定属性从 Web API 返回到客户端?如果可能,当我仅将属性推送到客户端正在使用的 Web API 时。这是否仅影响这些属性的表数据?
我已经在这样的网站上搜索过,但找不到这个: https://shellmonger.com/30-days-of-azure-mobile-apps-the-table-of-contents/https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/
是否可以仅将表的特定属性从 Web API 返回到客户端?
是的,Azure 移动应用 SDK 支持相当多的 OData v3 规范,我们可以通过使用$select
子句来选择特定的 fiedl。更多详情请参阅数据访问概念。
当我仅将属性推送到客户端正在使用的 Web API 时。这是否仅影响这些属性的表数据?
我们可以做到这一点。在我看来,如果我们想更新所有属性的一部分,那么我们可能需要包含 id 字段和版本字段。Id
字段文件使表实体全局唯一。Version
字段是关于冲突检测的。
如果有任何冲突,我们可以使用我们的逻辑来处理冲突。更多详细信息,请参阅处理冲突解决。以下是文档中的演示代码。
sync Task ResolveConflictAsync(MobileServiceTableOperationError error)
{
var serverItem = error.Result.ToObject<T>();
var localItem = error.Item.ToObject<T>();
// Note that you need to implement the public override Equals(TodoItem item)
// method in the Model for this to work
if (serverItem.Equals(localItem))
{
// Items are the same, so ignore the conflict
await error.CancelAndDiscardItemAsync();
return;
}
// Client Always Wins
localItem.Version = serverItem.Version;
await error.UpdateOperationAsync(JObject.FromObject(localItem));
// Server Always Wins
// await error.CancelAndDiscardItemAsync();
}