2017-02-23 55 views
0

我正在使用Azure移動應用程序服務軟刪除和增量同步功能。我做這樣的事情爲Foo實體設置刪除標誌作爲客戶端上的錯誤,然後試圖找回它:使用SyncTable設置Azure移動應用服務元數據列(刪除)

1) foo.deleted = false; 
2) Client.GetSyncTable<Foo>().Update(foo); 
3) Client.GetSyncTable<Foo>().Where(w => w.id == "xxx" && w.deleted == false).ToListAsync(); 
//The above step 3 doesn't seem to return any results. 
4) Client.GetSyncTable<Foo>().Where(w => w.id == "xxx").ToListAsync(); //This returns a result; 

所有上述步驟,按我的理解正在發生的針對離線表。

我只是好奇地想知道幕後會發生什麼。我知道有一個DeleteAsync方法可用,但我只是想了解是什麼導致第3步不返回任何結果,但第4步確實返回結果。

不能在客戶端操縱刪除元數據列嗎?

回答

0

您可以檢查出在GitHub代碼 - https://github.com/azure/azure-mobile-apps-net-client

短版,當你做了......如果(東西),它會創建一個SQL查詢,但不執行它。例如,當您實際請求結果(例如,通過.ToListAsync())時,它會執行查詢,轉換結果並將它們返回給您。這使您可以構建複雜的LINQ表達式,然後以最有效的方式將其轉換爲SQL查詢。

+0

嗨,謝謝你的迴應。缺少的ToListAsync()是一個錯字。對於那個很抱歉。 (你的博客真棒btw !!) 我的問題是當我做 1)foo.deleted = false; 2)Client.GetSyncTable ().UpdateAsync(foo); //下面的第3步返回0記錄 3)Client.GetSyncTable ().Where(w => w.id ==「xxx」&& w.deleted == false).ToListAsync(); //但第4步返回結果; 4)Client.GetSyncTable ().Where(w => w.id ==「xxx」)。ToListAsync(); 總之設置, foo.deleted = true然後執行UpdateAsync(foo)就像做DeleteAsync(foo)一樣? –