2014-11-25 30 views
0

我設法得到PullAsync在Azure的移動服務1.3.0-β3使用PullAsync現在需要QueryId和結果不再返回

responseTypeTable.PullAsync(responseTypeTable.Where(c => c.CompanyId == companyId)); 

然後我升級到了第一個穩定版本上週末正常工作。

現在,PullAsync需要QueryId參數以及查詢。首先,我很困惑爲什麼會出現一個突破性的改變,將beta3轉換爲stable,我認爲API現在應該已經很好地被排序了,所以也許我做錯了什麼。

不管怎樣,我把詢問ID,如圖

responseTypeTable.PullAsync("QueryResponseTypePull", 
          responseTypeTable.Where(c => c.CompanyId == companyId)); 

的代碼可以編譯和運行,它甚至執行罰款,打API,但它並沒有任何值返回到本地存儲。當我運行時

result = await responseTypeTable.Where(c => c.CompanyId == companyId).ToListAsync(); 

要從本地數據庫獲得結果,它總是空的。這是我更新到1.3.0穩定版之前的完全相同的代碼。

+0

好的,我恢復到beta3(再次完全相同的代碼,我甚至在這個時候離開了QueryId),並且它完美地工作。我將不得不堅持使用Beta3,直到我找出導致此問題的原因。 – 2014-11-25 12:28:04

+1

嘗試刪除舊的數據庫或使用新的數據庫文件名。格式在beta3和final之間改變。僅供參考,關於查詢ID的更多信息:https://social.msdn.microsoft.com/Forums/azure/en-US/da1e81c0-4437-4ecd-a1cb-c8745faef522/breaking-change-in-mobile-services- offine-sync-version-13?forum = azuremobile – 2014-11-25 22:43:37

+0

我確實嘗試了一個新的數據庫名稱以及測試但結果相同。我已經結束了從我的項目中刪除所有同步代碼的時刻,並且因爲我已經過去的截止日期而回到現在的直接api調用。我已升級到穩定版本,並且至少所有使用常規MobileServiceTable的直接API調用都很好。部署此項目後,我會在幾天內再次嘗試同步。 – 2014-11-26 04:06:00

回答

5

提供QueryId會導致框架以增量方式下載更改,即只有在您上次同步後下載更新的數據。

如果你希望下載所有的數據,每次你可以傳遞null來代替QueryId,它將採用完全同步。

+0

初始負載甚至沒有工作。我目前在我的local.db中沒有任何內容,並且它發送到API的查詢顯示在任何UpdatedAt> 1970-01-01上,因此它應該獲取所有內容。 – 2014-11-25 15:56:56

+0

如果您有.NET後端,則需要使用Queryable屬性註釋控制器操作。如果它是節點後端,那麼你需要在表中有__updatedAt列。你嘗試null queryId來訴諸舊的行爲? – 2014-11-25 17:45:13

+0

我發現最近的是[EnableQueryAttribute]屬性。它是否正確? GetAll返回一個IQueryable ,但是我需要額外的屬性嗎? – 2014-11-26 04:07:57