如何使用Azure服务提供程序在xamarin表单中调用Azure操作

时间:2016-11-02 11:54:34

标签: azure xamarin.forms azure-mobile-services

我正在使用Azure服务提供商(xamarin表单中的Azure SDK)从Azure云服务器下载数据,我使用以下代码来获取所有数据

 var table = AzureServiceProvider.Instance.GetRemoteTable<T>();

var query = table.CreateQuery();
            if (filter != null)
            {
                query = table.Where(filter);
            }
            List<T> azureDatas;
            await query.ToListAsync();

当我使用上面的代码时,会点击以下网址https://MyService.azurewebsites.net/tables/TableName

但是现在我必须传递id(即api / table / {TableName} / {controller} / {id})来仅获取匹配该id的所需数据

使用上面相同的代码点击上面的URL https://MyService.azurewebsites.net/tables/TableName 我希望使用的内容

EX: - https://mobilddevservice.azurewebsites.net/tables/TableName/(methodName)/(ID)10338654

2 个答案:

答案 0 :(得分:2)

我不知道你是否想出这个,但是为了在控制器中定位一个特定的方法,你可以在你的桌子上使用“.WithParameters”方法。

因此,假设您的控制器中有两种方法:

// GET tables/TableName/id
public SingleResult<TableName> GetDataFromName(string name)
{
     //Your logic here
}

// GET tables/TableName/id
public SingleResult<TableName> GetDataFromAddress(string address)
{
    //Your logic here
}

您可以使用 .WithParameters 分别访问这些方法:

Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("name", name);        

var query = Table.WithParameters(parameters);                

var results = await query.ToEnumerableAsync();

访问地址方法

Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("address", personsAddress);        

var query = Table.WithParameters(parameters);                

var results = await query.ToEnumerableAsync();

所以重要的部分是:

  1. 据我所知,你只能发送字符串。但我可能会 错了
  2. 参数字典中的名称必须准确无误 控制器中变量的名称!

答案 1 :(得分:0)

使用以下内容进行Id的查询:

var table = client.GetTable<T>();
var record = await table.LookupAsync(id);

它使用不同的端点 - https://site.azurewebsites.net/tables/Table/{id}

有关详情,请查看书籍:https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter3/client/