Azure Mobile Service Sync与不支持SELECT子句同步



我已经在我的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所说的那样,您可以更改服务器端代码,并限制仅登录用户检索的数据。有关更多详细信息,您可以参考数据投影和查询>每个用户数据。

最新更新