Xamarin.Forms с использованием SQLite.Net.Async

Я следовал инструкциям здесь http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/databases/ - для синхронного подключения к базе данных SQLite.

public SQLiteConnection GetConnection()
{
    var dbFilname = "localDB.db3";
    string docsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
    var path = Path.Combine(docsPath, dbFilname);

    var plat = new SQLitePlatformAndroid();
    var conn = new SQLiteConnection(plat, path);
    return conn;
}

Я хочу изменить его на асинхронное соединение (SQLiteAsyncConnection), но не могу заставить его работать.

Согласно инструкциям здесь - https://components.xamarin.com/gettingstarted/sqlite-net - ему просто нужен путь в качестве параметра

var conn = new SQLiteAsyncConnection(path);

это не работает, ошибка говорит, что ожидаемые параметры:

функция соединения, TaskScheduler и TaskCreationOptions

Я понятия не имею, что делать, и я не смог найти примеры, которые работают.

заранее спасибо

2 ответа

Решение

Вы можете просто повторно использовать метод GetConnection, который у вас уже есть, и создать асинхронное соединение следующим образом:

var asyncDb = new SQLiteAsyncConnection(() => GetConnection());

Платформы Xamarin для Android Config, iOS и WP в основном равны

public SQLiteAsyncConnection GetConnectionAsync()
        {
            const string fileName = "MyDB.db3";
            var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            var path = Path.Combine(documentsPath, fileName);

            var platform = new SQLitePlatformAndroid();

            var param = new SQLiteConnectionString(path, false); 
            var connection = new SQLiteAsyncConnection(() => new SQLiteConnectionWithLock(platform, param)); 

            return connection;
        }
Другие вопросы по тегам