如何使用 Azure Offline Sync 拉取带有参数的数据?
how to Pull data with paramter using Azure Offline Sync?
我有如下架构,我想知道当我必须提取所有数据时是否可以通过 CategoryId 获取所有 TaskCategoryMappings。我浏览了文档 here but I cant figure out how to do it ? All the examples are like this 一个基于 UserId 的文档。但是 userid 也用于身份验证,在服务器端我已经很好地处理了 return 只有映射属于相关用户而且我还想按 CategoryId 过滤?
另一个 SO 示例也在此处使用 userId
public class TaskCategoryMapping : TableData
{
public string TaskId { get; set; }
public string CategoryId { get; set; }
public string UserId { get; set; }
}
根据你的描述,我自己检查了这个问题,发现它可以按预期工作,你可以按照下面的详细信息检查你的代码:
后端模型:
public class Tag : EntityData
{
public string TagName { get; set; }
public bool Status { get; set; }
}
public class Message : EntityData
{
public string UserId { get; set; }
public string Text { get; set; }
public virtual Tag Tag { get; set; }
[ForeignKey("Tag")]
public string Tag_Id { get; set; }
}
GetAllMessage 操作:
// GET tables/Message
public IQueryable<Message> GetAllMessage()
{
return Query();
}
对于客户端,我只是调用在线table来检索消息实体,如下所示:
模型 client-side:
public class Message
{
public string Id { get; set; }
public string UserId { get; set; }
public string Text { get; set; }
public string Tag_Id { get; set; }
}
var result=await mobileServiceClient.GetTable<Message>().Where(msg => msg.Tag_Id == "c3cd4cf8-7af0-4267-817e-f84c6f0e1733").ToListAsync();
对于离线 table,拉取操作查询将
await messageSyncTable.PullAsync($"messages_{userid}", messageSyncTable.Where(m => m.Tag_Id == "<Tag_Id>"));
使用fiddler,你会发现请求是这样的:
https://{your-app-name}.azurewebsites.net/tables/Message?$filter=Tag_Id eq 'c3cd4cf8-7af0-4267-817e-f84c6f0e1733'
我有如下架构,我想知道当我必须提取所有数据时是否可以通过 CategoryId 获取所有 TaskCategoryMappings。我浏览了文档 here but I cant figure out how to do it ? All the examples are like this 一个基于 UserId 的文档。但是 userid 也用于身份验证,在服务器端我已经很好地处理了 return 只有映射属于相关用户而且我还想按 CategoryId 过滤?
另一个 SO 示例也在此处使用 userId
public class TaskCategoryMapping : TableData
{
public string TaskId { get; set; }
public string CategoryId { get; set; }
public string UserId { get; set; }
}
根据你的描述,我自己检查了这个问题,发现它可以按预期工作,你可以按照下面的详细信息检查你的代码:
后端模型:
public class Tag : EntityData
{
public string TagName { get; set; }
public bool Status { get; set; }
}
public class Message : EntityData
{
public string UserId { get; set; }
public string Text { get; set; }
public virtual Tag Tag { get; set; }
[ForeignKey("Tag")]
public string Tag_Id { get; set; }
}
GetAllMessage 操作:
// GET tables/Message
public IQueryable<Message> GetAllMessage()
{
return Query();
}
对于客户端,我只是调用在线table来检索消息实体,如下所示:
模型 client-side:
public class Message
{
public string Id { get; set; }
public string UserId { get; set; }
public string Text { get; set; }
public string Tag_Id { get; set; }
}
var result=await mobileServiceClient.GetTable<Message>().Where(msg => msg.Tag_Id == "c3cd4cf8-7af0-4267-817e-f84c6f0e1733").ToListAsync();
对于离线 table,拉取操作查询将
await messageSyncTable.PullAsync($"messages_{userid}", messageSyncTable.Where(m => m.Tag_Id == "<Tag_Id>"));
使用fiddler,你会发现请求是这样的:
https://{your-app-name}.azurewebsites.net/tables/Message?$filter=Tag_Id eq 'c3cd4cf8-7af0-4267-817e-f84c6f0e1733'