Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用azure移动服务清除本地数据库?_Azure_Xamarin_Xamarin.forms_Azure Mobile Services - Fatal编程技术网

如何使用azure移动服务清除本地数据库?

如何使用azure移动服务清除本地数据库?,azure,xamarin,xamarin.forms,azure-mobile-services,Azure,Xamarin,Xamarin.forms,Azure Mobile Services,我正在使用Azure移动服务,我想清除本地数据库,我如何才能做到这一点 我的本地数据库有问题。当我在应用程序中注销并与其他用户一起登录时,会为当前用户加载上一个用户的数据,我不知道为什么会发生这种情况。我在服务器端使用debug,服务器返回正确的数据,然后我认为问题在于本地数据库 我正在使用Azure移动服务,我想清除本地数据库,我如何才能做到这一点 要删除SQLite文件,可以按照以下步骤操作。此外,您还可以利用IMobileServiceSyncTable提供的功能来清除脱机缓存下的记录,详

我正在使用Azure移动服务,我想清除本地数据库,我如何才能做到这一点

我的本地数据库有问题。当我在应用程序中注销并与其他用户一起登录时,会为当前用户加载上一个用户的数据,我不知道为什么会发生这种情况。我在服务器端使用debug,服务器返回正确的数据,然后我认为问题在于本地数据库

我正在使用Azure移动服务,我想清除本地数据库,我如何才能做到这一点

要删除SQLite文件,可以按照以下步骤操作。此外,您还可以利用
IMobileServiceSyncTable
提供的功能来清除脱机缓存下的记录,详细信息如下

当我在应用程序中注销并与其他用户一起登录时,会为当前用户加载上一个用户的数据,我不知道为什么会发生这种情况。我在服务器端使用debug,服务器返回正确的数据


由于您没有提供有关实现的详细信息(例如,用户登录/注销、用户数据管理等),因此我建议您检查服务器端/客户端是否同时启用每用户数据存储。您可以使用fiddler在其他用户登录时捕获网络跟踪,并确保返回正确的用户标识符(例如UserId),然后根据本地数据库检查查询。此外,我建议您遵循adrian hall关于的书。

您可以通过执行以下操作删除所有本地DB文件

var dbFiles=Directory.GetFiles(mobileseserviceclient.DefaultDatabasePath,“*.db”);
foreach(dbFiles中的var db)
{
文件删除(db);
} 
但是,这会每次删除所有数据并导致性能问题,因为每次执行此操作后,您都会从Azure DB获得数据的新副本,而不是使用设备的SQLite DB中的缓存副本

我们通常只在调试时使用它,它出现在
foreach
中的原因是为了捕获创建的所有数据库(请参考我的上一个建议)

您还可以尝试解决数据交叉这一核心问题


你可能会看到这种行为还有另一个原因。使用
PullAsync
,是否向其传递查询ID?您的PullAsync行应该与此类似

GetAllFoo(字符串用户ID)
{
返回wait fooTable.PullAsync(“allFoo”+userId,fooTable.Where(f=>f.userId==userId));
}
请注意,查询ID每次都是唯一的(或者至少对于每个用户)。这主要由Azure的脱机同步部分使用,但与
Where
语句结合使用(请确保导入
System.Linq
),这将确保只带回正确的数据

你可以找到更多关于这方面的信息


此外,您可能需要考虑的一些事项,为每个用户ID存储一个单独的数据库。我们正在为我们的应用程序(使用公司ID)执行此操作,因此每个数据库都是独立的。如果您这样做,并在登录时使用正确的数据库,则不存在任何数据交叉的可能性

更新链接:和