2016-04-15 11 views
4

Ich verwende Xamarin Forms und den WindowsAzure.MobileServices.SQLiteStore NuGet, um die Synchronisation zwischen meiner SQLite-Datenbank und meiner Azure-Datenbank zu ermöglichen. Alles funktioniert gut, aber wenn ich meinen Benutzer abmelden möchte ich die Datenbank reinigen. Auf diese Weise wird bei der nächsten Anmeldung die Datenbank erneut generiert und von Null synchronisiert. Ich habe versucht, die Tabellen zu bereinigen, aber das entfernt nur lokale Daten und wenn Sie sich wieder einloggen, werden nur neue Daten synchronisiert.So löschen Sie die SQLite-Datenbank beim Abmelden

Derzeit mein dispose macht folgendes:

// Globally declared and initialized in my init() method 
MobileServiceSQLiteStore store { get; set; } 
public MobileServiceClient MobileService { get; set; } 

public async Task Dispose() 
{ 
    try 
    { 
     initialized = false; 

     // await this.userTable.PurgeAsync<AzureUser>("CleanUsers", this.userTable.CreateQuery(), CancellationToken.None); 

     store.Dispose(); 
     MobileService.Dispose(); 

     store = null; 
     MobileService = null; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 

Jede Idee, wie ich diese Komponente meine SQLite-Datenbank beim Abmelden reinigen kann mit? Vielen Dank!

+0

Haben Sie versucht, nach dem Löschen der Daten eine Synchronisierung zu erzwingen? So warten 'MobileService.SyncContext.PushAsync();' nach 'PurgeAsync()'? – hvaughan3

+0

@ hvaughan3 Sobald sich der Benutzer wieder anmeldet, wird erneut synchronisiert, aber die bereinigten Daten werden nicht synchronisiert, stattdessen werden nur neue Datensätze synchronisiert. –

Antwort

4

Wenn Sie alle Einzelteile zu reinigen, verwenden Sie:

this.userTable.PurgeAsync(null, null, true, CancellationToken.None); 

See the code.

+2

Hier ist ein Beispiel: https://github.com/lindydonna/ContosoMoments/blob/dev/src/Mobile/ContosoMoments/App.cs#L132 –

+0

Sorry, ich habe es gerade zu sehen, seit ich eine Änderung der Prioritäten hatte was getan werden musste. Die pureAsync-Methode bereinigt die lokalen Datenbanken, aber wenn sich der Benutzer erneut anmeldet, synchronisiert er nur neue Zeilen, die in azure hinzugefügt wurden, und nicht die Zeilen, die zuvor gelöscht wurden ... Irgendeine Idee, warum dies passieren könnte? –