2016-09-16 3 views
0

Ich möchte meine Daten in der SQLite Datenbank speichern, also habe ich das SQLite.Net-PLC nugget installiert und ich habe eine Verbindung in Android und iOS erstellt, dann habe ich SQLite.Net.Async installiert. PLC nuget und erstellt ein Repository, in dem ich die Funktionen definieren: einfügen, aktualisieren und löschen wie:Xamarin Forms SQLite

public Task<int> InsertAsync(T entity) { 
     return _connection.InsertAsync(entity); 
    } 

auch ich Tabellen wie folgt zu erstellen:

public Repository(ISQLiteConnection connectionService) { 
     _connectionService = connectionService; 
     _connection = _connectionService.GetConnection(); 
     _connection.CreateTableAsync<T>(); 
    } 

In meiner Seite ich eine der eingefügt werden soll Tabelle:

ISQLiteConnection connectionService = DependencyService.Get<ISQLiteConnection>(); 
var activityRepo = new Repository<Activity>(connectionService); 
await activityRepo.InsertAsync(activity); 

Es gibt mir diese Fehlermeldung: SQLite.Net.SQLiteException: keine solche Tabelle: Aktivität

ich einen Haltepunkt setzen, es ist die Erstellung der Tabelle und der Fehler auf dem Einsatz asynchronen statment Pop-up.

+0

Die Tabelle wird auch async erstellt. Hast du versucht es abzuwarten? Vielleicht ist der Tisch noch nicht erstellt. – Blacktempel

+0

Ich versuche, die create-Tabelle in einer separaten Funktion und dann die Funktion mit warten, aber es gibt mir diesen Fehler: System.NotSupportedException: Ich weiß nicht über System.Collections.ObjectModel.ObservableCollection'1 [System.String ] – Mireille

Antwort

0

Sie haben die Warnung unter dieser Codezeile ignorieren:

_connection.CreateTableAsync<T>(); 

Die Warnung deutlich, dass dieser Anruf nicht erwartete angeben würde. So wird der Konstruktor der Repository wahrscheinlich zurückgeben, bevor die Tabelle überhaupt erstellt wird.

var repo = new Repository(connectionService); 
await repo.CreateTablesAsync(); 

Und Ihre Repository ändern:

public async Task CreateTablesAsync() 
{ 
    await _connection.CreateTableAsync<T>(); 
} 

Entfernen Sie eine der oben genannten await Keywords oder du wird laufen, die Methode und nicht warten, bis es zu beenden.

+0

Danke für Ihre Antwort, es gibt mir einen Fehler unter Aufgabe und der Funktionsname, weil es – Mireille

+0

@Mireille Antwort behoben werden sollte. Bitte überprüfen Sie erneut – user3185569

+0

es gibt mir diesen Fehler System.NotSupportedException: Ich weiß nichts über System.Collections.ObjectModel.ObservableCollection'1 [System.String] – Mireille