Вы можете удалить все локальные файлы БД, выполнив следующие действия.
var dbFiles = Directory.GetFiles(MobileServiceClient.DefaultDatabasePath, "*.db");
foreach (var db in dbFiles)
{
File.Delete(db);
}
Однако при этом все данные будут удаляться каждый раз и вызывать проблемы с производительностью, поскольку каждый раз после этого вы будете получать свежую копию данных из базы данных Azure, а не использоватькэшированная копия в БД SQLite устройства.
Обычно мы используем это только для отладки, и причина в foreach
состоит в том, чтобы захватить все созданные базы данных (см. мое последнее предложение)
Есть несколько других вещей, которые вы могли бы попытаться обойти по своей основной проблеме пересечения данных.
Есть еще одна причина, по которой вы можете видеть это поведение.С вашим PullAsync
вы передаете ему идентификатор запроса?Ваша строка PullAsync должна выглядеть примерно так:
GetAllFoo(string userId)
{
return await fooTable.PullAsync("allFoo"+userId,fooTable.Where(f=>f.userId == userId));
}
Обратите внимание, что идентификатор запроса будет уникальным каждый раз (или, по крайней мере, для каждого пользователя).Это используется в основном частью автономной синхронизации Azure, но в сочетании с оператором Where
(обязательно импортируйте System.Linq
), это должно обеспечить возвращение только правильных данных.
Вы можете найти более подробную информацию об этом здесь .
Кроме того, некоторые вещи, которые вы можете рассмотреть, сохраняют отдельную базу данных для каждого userId.Мы делаем это для нашего приложения (с идентификатором компании), чтобы каждая база данных была отдельной.Если вы сделаете это и используете правильную базу данных при входе в систему, нет никакой вероятности того, что данные будут пересекаться.