我已经在我的Xamarin表单应用程序中进行了一个同步操作,现在很长时间服务更改或更新中引入的内容?在启动时,我将所有数据与M Azure移动服务同步:
await this.client.SyncContext.PushAsync();
if (signedInUser != Guid.Empty)
{
await this.MyTable.PullAsync(
"myWorkoutsOnly",
this.MyTable.CreateQuery().Select(u => u.UserId == signedInUser));
}
,正如我所说,我从来没有这个代码问题。但是现在,我得到了:
System.ArgumentException: Pull query with select clause is not supported
我只想同步与用户中签名的数据相匹配,所以有其他方法可以实现此目标吗?
我只想同步与用户中签名的数据相匹配,因此有其他方法可以实现此目标吗?
您可以利用下面的代码来实现您的目的,如下所示:
var queryName = $"incsync_{UserId}";
var query = table.CreateQuery()
.Where(u => u.UserId == signedInUser);
await table.PullAsync(queryName, query);
对于Select
方法,您可以将特定属性检索到本地商店,而不是在线表中的所有属性,如下所示:
var queryName = $"incsync:s:{typeof(T).Name}";
var query = table.CreateQuery()
.Select(r => new { r.Text, r.Complete, r.UpdatedAt, r.Version });
await table.PullAsync(queryName, query);
有关更多详细信息,您可以参考Adrian Hall的有关查询管理的书。
更新:
正如Joagwa所说的那样,您可以更改服务器端代码,并限制仅登录用户检索的数据。有关更多详细信息,您可以参考数据投影和查询>每个用户数据。