2016-09-16 3 views
0

Я хочу сохранить свои данные в базе данных SQLite, поэтому я установил nutet SQLite.Net-PLC, и я создал соединение в android и iOS, затем я установил SQLite.Net.Async- PLC NuGet и создали хранилище, где я определяю функции: вставка, обновление и удаление, как:Xamarin Forms SQLite

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

Также я создаю таблицы, как это:

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

в моей странице я хочу, чтобы вставить стол:

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

Это дает мне эту ошибку: SQLite.Net.SQLiteException: нет такой таблицы: активность

я ставлю точку останова, он создает таблицу и ошибки выскакивают на вставку асинхронного даного.

+0

Таблица также создается асинхронно. Вы пытались его подождать? Возможно, таблица еще не создана. – Blacktempel

+0

Я пытаюсь помещать таблицу create в отдельную функцию, а затем вызывать функцию с ожиданием, но она дает мне эту ошибку: System.NotSupportedException: не знаю о System.Collections.ObjectModel.ObservableCollection'1 [System.String ] – Mireille

ответ

0

Вы сделали игнорировать предупреждение по этой строке кода:

_connection.CreateTableAsync<T>(); 

Предупреждение будет четко заявить, что этот призыв не ожидается. Таким образом, конструктор Repository, скорее всего, вернется до того, как будет создана даже таблица.

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

И изменить Repository:

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

Не удаляйте из вышеперечисленных await ключевых слов или ты собираешься запустить этот метод, а не ждать, пока она закончится.

+0

Спасибо за ваш ответ, он дает мне ошибку в Задаче и имя функции, потому что она должна вернуть – Mireille

+0

@Mireille Ответ исправлен. Пожалуйста, перепроверьте – user3185569

+0

, он дает мне эту ошибку System.NotSupportedException: Не знаю о System.Collections.ObjectModel.ObservableCollection'1 [System.String] – Mireille