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操作一次发送一个更改。 –