2017-08-07 16 views
0

Azure Mobile Appsを使用すると、テーブル間で同期をとることができます。私はさまざまな目的で複数のアプリを構築しています。他のアプリでは、特定のテーブルのすべてのプロパティを必要とするのではなく、一度だけ必要とします。 Web APIからクライアントへのテーブルの特定のプロパティのみを返すことは可能ですか?可能であれば、クライアントが使用しているWeb APIにプロパティだけをプッシュします。これはそれらのプロパティのテーブルデータにのみ影響しますか?Azure Mobile Apps TableControllerのエンティティ固有のプロパティ

は、私はすでにのようなウェブサイト上で検索、これ見つけることができませんでした: https://shellmonger.com/30-days-of-azure-mobile-apps-the-table-of-contents/ https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/

+0

このスレッドに関する最新の情報がありますか?それが役に立つなら、それを、同じ問題を抱えているより多くのコミュニテイターに役立つ答えとしてください。 –

答えて

0

それはクライアントへのWeb APIからテーブルの唯一の特定のプロパティを返すことは可能ですか?

はい、AzureのモバイルアプリSDKは、ODataのv3の仕様のかなりをサポートし、我々は$select句を使用して、特定のfiedlsを選択し使用することができます。詳細はData Access Conceptsを参照してください。

私はクライアントが使用しているWeb APIにプロパティのみをプッシュします。これはそれらのプロパティのテーブルデータにのみ影響しますか?

これも可能です。私の意見では、すべてのプロパティの一部をアップさせたい場合は、id fieldversion fieldを含める必要があります。 Idフィールドファイルは、テーブルエンティティをグローバルに一意にします。Versionフィールドはすべて競合検出に関するフィールドです。

競合が発生した場合は、ロジックを使用して競合を処理できます。詳細情報はHandling Conflict Resolutionを参照してください。この文書のデモコードは次のとおりです。

sync Task ResolveConflictAsync(MobileServiceTableOperationError error) 
{ 
    var serverItem = error.Result.ToObject<T>(); 
    var localItem = error.Item.ToObject<T>(); 

    // Note that you need to implement the public override Equals(TodoItem item) 
    // method in the Model for this to work 
    if (serverItem.Equals(localItem)) 
    { 
     // Items are the same, so ignore the conflict 
     await error.CancelAndDiscardItemAsync(); 
     return; 
    } 

    // Client Always Wins 
    localItem.Version = serverItem.Version; 
    await error.UpdateOperationAsync(JObject.FromObject(localItem)); 

    // Server Always Wins 
    // await error.CancelAndDiscardItemAsync(); 
} 
関連する問題