2017-10-20 10 views
0

私は自分自身のためのリスティング、リストであるAzureモバイルEasy Table Xamarin Appを持っています。追加、更新、削除は正常に動作します。ソフト削除されたアイテムのリストを取得できるようにしたいので、リストを再入力せずにそれらをリストに戻すために一部を元に戻すことができます。私はこれを行う方法を理解することはできません。 Google検索でIncludeDeleted属性が表示されますが、使用しているIMobileServiceSyncTableテーブルには適用されません。ここにコードがありますが、ゼロレコードを取得します。私がLinqPad 5で実行すると、ソフト削除されたレコードがすべて取得されます。ここでAzureモバイルアプリの簡単なテーブル内のソフト削除されたレコードのクエリ

public async Task<IEnumerable<ListData>> GetDeletedItemsAsync() 
    { 
     await InitializeClient(); 
     await SyncItems(); 

     try 
     { 
      IEnumerable<ListData> items = await listdata 
       .Where(listdata => listdata.Deleted == true) 
       .ToEnumerableAsync(); 

      return new ObservableCollection<ListData>(items); 
     } 
     catch (MobileServiceInvalidOperationException msioe) 
     { 
      Debug.WriteLine(@"Invalid sync operation: {0}", msioe.Message); 
     } 
     catch (Exception e) 
     { 
      Debug.WriteLine(@"Sync error: {0}", e.Message); 
     } 
     return null; 

    } 

は、クラスである:私は

public class ListData 
{ 
    public string id { get; set; } 
    [JsonProperty(PropertyName = "listname")] 
    public string ListName { get; set; } 
    [JsonProperty(PropertyName = "itemdata")] 
    public string ItemData { get; set; } 
    [JsonProperty(PropertyName = "itemdetail")] 
    public string ItemDetail { get; set; } 
    [JsonProperty(PropertyName = "deleted")] 
    public Boolean Deleted { get; set; } 
    // *** Enable Optimistic Concurrency *** // 
    [Version] 
    public string Version { get; set; } 
} 

何をしないのですか?ありがとう。

private async Task SyncItems() 
{ 
    var queryName = $"incsync:s:{typeof(ListData).Name}"; 
    var query = listDataTable.CreateQuery().IncludeDeleted(); 
    await listDataTable.PullAsync(queryName, query); 
} 

そして、あなたは、あなたが応答を確認することができ、上記の方法を呼び出すネットワークトレースをキャプチャするfiddlerを使用して見つけることができる:私の理解パー

答えて

0

これを行う方法は、IMobileServiceTableオブジェクトを使用してサーバーに直接移動することです。それはかなり簡単です。次に、クエリでIncludeDeletedディレクティブを使用できます。ケースが解決しました。

0

、次のようにあなたのSyncItems方法を変更しようとすることができ削除されたアイテムを取得できるかどうか。

DB Browser for SQLiteまたは他のツールを利用してローカルのSQLiteデータベースをチェックし、テーブルレコードを確認してこの問題を絞り込むことができます。

+0

これは、_deletedをパラメータとして使用できないことを示します。私は、同期されたテーブル、つまりオフラインで同期されたテーブルでは、自分がやりたいことができないということが問題になっていることを知り始めました。これは実際問題ではありません。 IMobileServiceTableを使用して削除したアイテムをサーバーから直接取得し、削除したくないアイテムの復元を取り消し、同期されたテーブルを再同期して自分のアプリケーションで表示する必要があります。私はこのAppプログラミングの初心者で、正しい軌道にあるというコンホメーションと、IMobileServiceTable オブジェクトを使用してレコードを取得および更新するためのコードサンプルを評価します。 – Robertb

関連する問題