2017-02-26 10 views
0

私はAzure Mobile Appsプロジェクトで作業しています。ここでは、2つのパラメータを受け入れて値のリストを与えることができるテーブルコントローラを定義する必要があります。私はその価格や商人によって、特定の商品アイテム、フィルタを取得する必要がありAzureテーブルコントローラ - パラメータを使用してレコードを取得する

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; } 
} 

あるProductItemのためのDataObjectを、持っています。すでに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<ProductItem> items = await productTable.ToEnumerableAsync();が呼ばれました。

私の質問は、コントローラに既に定義されているGetAllProductItems()をクライアントに呼び出すことができないのです。私たちが電話することができれば、それをどうやるか。

また、コントローラメソッドが必要ですが、GetAllProductByMerchat(string merchantId)が必要です。どうすればこれを可能にすることができますか?

答えて

1

テーブルコントローラは、クライアントSDKによって自動的に呼び出され、クライアント上でLINQクエリを操作することができます。これは、ワイヤ全体でのODataクエリに変換されます

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

、当時それはその後、SQLに変換され、SQL Azureのインスタンス上で実行されますサーバー、上のLINQクエリへの翻訳:あなたは、のようなものを使用することができます。詳細については

http://aka.ms/zumobook

+0

私は何かを計算するためにサーバーのロジックが存在します。私は太いサーバーのシンクライアントのコンセプトに従う必要があります。 TableControllerでそれは不可能ですか? –

+0

詳細については、http://aka.ms/zumobook - 第3章を参照してください。 –

0

あなたはこれを意味しましたか?

// 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)メソッドに同じことを行うことができます。

+0

の第3章を参照してくださいこんにちは、私の質問はTableControllersためです。しかし、あなたの方法論はAPIコントローラのようです。ではない。 Iamが間違っている場合は、私に連絡してください。 –

+0

クライアントから名前でサーバメソッドを呼び出す場合は、APIコントローラを使用してください。 –

関連する問題