【问题标题】:Azure Table Controllers - Get records by to parametersAzure 表控制器 - 通过参数获取记录
【发布时间】:2017-02-26 06:36:52
【问题描述】:

我正在开发一个 Azure 移动应用项目。我必须定义一个表控制器,它可以接受两个参数并给出一个值列表。我有一个 ProductItem 的 DataObject,它是

public class ProductItem : EntityData
{
    public string Name { get; set; }
    public string Details { get; set; }
    public double Price { get; set; }
    public string Image { get; set; }
    public Merchant Merchant { get; set; }
}

我需要获取特定的产品项目,按其价格和商家进行过滤。已经在ProductItemContoller,我已经搭好了

// GET tables/ProductItem
public IQueryable<ProductItem> GetAllProductItems()
{
    return Query();
}

// GET tables/ProductItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public SingleResult<ProductItem> GetProductItem(string id)
{
    return Lookup(id);
}

通过查看现有示例。但是在示例中,我们没有从客户端调用任何给定的方法。而是调用了IEnumerable&lt;ProductItem&gt; items = await productTable.ToEnumerableAsync();

我的问题是为什么我们不能将控制器中已经定义的GetAllProductItems() 调用给客户端。如果我们可以打电话,怎么做。

另外,我需要一个控制器方法,我需要一个GetAllProductByMerchat(string merchantId)。我怎样才能做到这一点。

【问题讨论】:

  • 您是否有机会解决此案的问题?我完全坚持这一点。 MSDN 文档含糊不清,并没有说明如何使用自定义 API

标签: c# azure xamarin.android azure-mobile-services


【解决方案1】:

客户端 SDK 会代表您自动调用表控制器,从而允许您在客户端上使用 LINQ 查询。你可以使用类似的东西:

var items = productTable.Where(p => p.Price < 100).ToListAsync();

这将通过网络转换为 OData 查询,然后在服务器上转换回 LINQ 查询,然后再转换为 SQL 并在 SQL Azure 实例上执行。

更多信息见http://aka.ms/zumobook第3章

【讨论】:

  • 不能我有一个服务器驻留逻辑来计算一些东西。我需要在这里遵循厚服务器 - 瘦客户端的概念。用 TableControllers 不可能吗?
  • 当然可以 - 查看aka.ms/zumobook - 第 3 章 - 了解详情。
【解决方案2】:

你是这个意思吗?

// Server method:
[HttpGet]
[Route("GetAllProductItems")]
public IQueryable<ProductItem> GetAllProductItems()
{
    return Query();
}

// Client call
var result = await MobileService.InvokeApiAsync<IQueryable<ProductItem>>("ProductItem/GetAllProductItems", HttpMethod.Get, null);

记得在 ProductItemController 之前添加这些属性:

[MobileAppController]
[RoutePrefix("api/ProductItem")]

您可以对 GetAllProductByMerchat(string merchantId) 方法执行相同的操作。

【讨论】:

  • 嗨,我的问题是针对 TableControllers。但是您的方法似乎适用于 API 控制器。是不是。如果我错了,请纠正我
  • 如果您想通过名称从客户端调用这些服务器方法,请使用 API 控制器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
相关资源
最近更新 更多