通过TableController更新Azure移动后端表中的记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过TableController更新Azure移动后端表中的记录相关的知识,希望对你有一定的参考价值。

我创建了WorkTableController.cs,它继承自TableController(用于使用Azure的脱机同步)。

   // PATCH tables/Work/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public Task<Work> PatchWork(string id, Delta<Work> patch)
    {
         return UpdateAsync(id, patch);
    }

    // POST tables/Work
    public async Task<IHttpActionResult> PostWork(Work item)
    {
        WorkOrder current = await InsertAsync(item);
        return CreatedAtRoute("Tables", new { id = current.Id }, current);
    }

我还创建了AppServiceAccess.cs来从WorkTableController.cs调用api

.....
client = new RestClient(appServiceUrl);
client.AddDefaultHeader("ZUMO-API-VERSION", "2.0.0");
client.Authenticator = new RestSharp.Authenticators.OAuth2AuthorizationRequestHeaderAuthenticator(result.AccessToken);

public static IRestResponse SendPostRequest(string url, object bodyParameter)
{
    var request = new RestRequest(url, Method.POST);
    request.RequestFormat = DataFormat.Json;
    request.AddBody(bodyParameter);
    return client.Execute(request);
}

public static IRestResponse SendPatchRequest(string url, object bodyParameter)
{
    var request = new RestRequest(url, Method.PATCH);
    request.RequestFormat = DataFormat.Json;
    request.AddBody(bodyParameter);
    return client.Execute(request);
}

我可以通过调用SendPostRequest()将数据插入到数据库中的表工作,没问题。但我不能通过调用SendPatchRequest()更新表Work中的任何记录。

你能给我一个解决方案吗?我的代码中的问题在哪里?如何使用TableController更新Azure移动后端表中的记录?

答案

更新操作请求如下所示:

PATCH https://{your-app-name}.azurewebsites.net/tables/{table-name}/{id}
Body: json payload

根据您的代码,代码如下所示:

var client = new RestClient("https://{your-app-name}.azurewebsites.net");
client.AddDefaultHeader("ZUMO-API-VERSION", "2.0.0");
var request = new RestRequest("tables/Work/81c0ca73-e554-4166-a016-c80591bf5924", Method.PATCH);
request.RequestFormat = DataFormat.Json;
request.AddBody(new
{
    text="hello world"
});
var result= client.Execute(request);

对于你的SendPatchRequest方法,参数url需要如下所示:

tables/{table-name}/{record-Id}

更新:

您可以在移动应用后端的config.IncludeErrorDetailPolicy下将IncludeErrorDetailPolicy.Always设置为Startup.MobileApp.cs,以检索详细的错误消息以解决此问题。我只是使用postman模拟补丁操作如下:

enter image description here

以上是关于通过TableController更新Azure移动后端表中的记录的主要内容,如果未能解决你的问题,请参考以下文章

将Azure虚机移到其他资源组或订阅

Azure:如何将消息从毒队列移回主队列?

如何将 Azure DevOps 项目移至其他组织?

有没有办法对通过 Azure 移动服务同步更新的本地 Sqlite 做出反应?

如何通过ARM更新Azure Service Bus的队列/主题?

如何通过数据库更新实现对 Azure Web 应用程序的零停机部署?