2

在使用Azure應用服務脫機同步時,是否可以利用客戶端上的事務?Azure應用服務中的客戶端事務脫機同步

在我看來,你幾乎只能在SQLite存儲中一次插入一條記錄,但理想情況下我希望能夠在一個事務中提交多條記錄。

我現在正在使用Xamarin和Android,但也會支持iOS。

感謝

馬特

回答

2

不幸的是,在Windows上,Xamarin和Android你只能在本地MobileServicesSQLiteStore時間提交一個記錄。這是因爲需要使用諸如SyncTable.UpdateAsync之類的方法一次一個地進行更改,這是您將更改標記爲要跟蹤以發送到服務器的方式。

在本機iOS上,移動服務脫機同步功能使用核心數據,它支持一種交易形式(https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdMemory.html)。如果您使用這些API,則仍需調用移動服務SDK方法來跟蹤內部跟蹤表中的每個單獨更改。

爲什麼你需要在客戶端進行交易?可能有不同的方式來實現你的目標。

+0

它並不是我真正需要的東西,但只是一些很好的東西。我基本上有一個對象的小圖,我需要同時提交所有對象,代表幾個不同的表。理想情況下,他們將是外鍵關係,並且我可以將它們全部提交到一個事務中,以確保我的數據庫中不會出現無效圖。 –

+1

它可以在本地存儲上使用upsert()API,然後調用MSClient方法(例如只填寫項目的ID)這樣,主數據就會進入並跟蹤需要轉到服務器的內容。然而,推到服務器仍然會一次做1條記錄,所以可能會破壞。 – phillipv

+0

@MattWhetton phillipv說,你可以批量插入,但它不會幫助你的場景,因爲Push操作一次發送一個更改。 –